• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用Swift语言做App开发之单元测试

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

作为一个有质量保障的应用程序,当然少不了单元测试;Swift开发的App也亦如此,此文将以一个简单的实例来介绍Swift中的单元测试。

这里我们使用XCode模版自带的XCTest框架,此框架包含了一个名为XCTestCase的类,所有的测试类都应该继承自它;按照约定俗成所有的测试方法名都应以test开头,并不能包含任何参数,只有这样,这些测试方法才能在运行测试时被自动执行;在每个测试方法里面,我们可以通过调用XCTAssert*函数去断言一个操作成功与否,如判等函数XCTAssertEqual、大于函数XCTAssertGreaterThan等;

话不多说,请先使用XCode创建一个iOS的Single View Application项目,并选择Swift作为开发语言。

大家可以看到创建完成后的目录结构应该是如此(这里我的项目名为TestDemo):

默认的模版会创建两个文件夹,一个和项目名同名(这里是TestDemo),用于放置App的主程序;另外一个则是“项目名+Tests”(这里是TestDemoTests),用于放置测试代码;

这里要注意的是,你要测试的类需要在Test中使用到,所以你在创建类文件时需要在Targets中同时选择TestDemo和TestDemoTests;

如我在主应用程序中添加一个名为Url的类:

创建完成后,录入代码:

 1 class Url {
 2     let baseUrl: String
 3     
 4     init(baseUrl: String) {
 5         self.baseUrl = baseUrl
 6     }
 7     
 8     func getActualPathFrom(resourcePath: String, segments: [String:String]) -> String {
 9         var actualPath = resourcePath
10         for (key,value) in segments {
11             var segmentPlaceHolder = "{\(key)}"
12             actualPath = actualPath.stringByReplacingOccurrencesOfString(segmentPlaceHolder, withString: value, options: .LiteralSearch, range: nil)
13         }
14         return baseUrl + actualPath
15     }
16 }

然后在TestDemoTests文件夹下创建UrlTests文件,此时由于该类只需要在测试中才能用到,所以只需要在Targets选择TestDemoTests就可以了:

创建完成后,导入XCTest框架,并使该类继承自XCTestCase,然后录入测试代码:

import XCTest

class UrlTests: XCTestCase {
    var urlInstance = Url(baseUrl: "http://localhost:8080/api/")
    
    func testShouldGetCorrectPathWhenNoSegmentProvided() {
        let resourcePath = "customers"
        
        let result = urlInstance.getActualPathFrom(resourcePath, segments: [String:String]())
        
        XCTAssertEqual(result, "http://localhost:8080/api/customers", "Can not get corrent path when no segments provided")
    }
    
    func testGetCorrectPathGivenOneSegment() {
        let resourcePath = "customer/{id}"
        
        let result = urlInstance.getActualPathFrom(resourcePath, segments: ["id": "10"]);
        
        XCTAssertEqual(result, "http://localhost:8080/api/customer/10", "Can not get corrent path when only one segment provided")
    }
}

最后Command+U执行测试 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift实现iOS录音与播放音频功能发布时间:2022-07-13
下一篇:
[Swift]正则表达式工具类发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap