Xcode 單元測試
添加單元測試
新建項目時添加

在已有項目中添加
File->New->Target...

效果

基本流程
單元測試的類繼承自:XCTestCase
測試方法以test開頭
override func setUp() {
////每次測試前調用,可以在測試之前創建在test case方法中需要用到的一些對象等
super.setUp()
}
override func tearDown() {
//每次測試結束時調用tearDown方法
super.tearDown()
}
func testExample() {
//具體的測試邏輯
}
基本測試流程:
- 定義變量和預期
- 執行方法得到實際值
- 斷言
常用斷言表達式
//通用斷言
XCTAssert(expression, format...)
//常用斷言:
XCTAssertTrue(expression, format...)
XCTAssertFalse(expression, format...)
XCTAssertEqual(expression1, expression2, format...)
XCTAssertNotEqual(expression1, expression2, format...)
XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, format...)
XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, format...)
XCTAssertNil(expression, format...)
XCTAssertNotNil(expression, format...)
XCTFail(format...) //直接Fail的斷言
基本的測試
func testExample() {
let a : Int32! = 5
let b : Int32! = 10
let expected: Int32! = 16;
let c:Int32! = self.add(a: a, b: b)
XCTAssertEqual(c, expected, "add方法錯誤");
}
異步測試
func testAsyn() {
let exp : XCTestExpectation = self.expectation(description: "出錯啦")
let queue: OperationQueue = OperationQueue.init()
queue.addOperation {
sleep(2)
XCTAssertLessThanOrEqual("1", "1")
exp.fulfill()
}
self .waitForExpectations(timeout: 3, handler: { (error: Error?) in
if error != nil {
print("超時:\(error.debugDescription)")
}
})
}
性能測試
func testPerformanceExample() {
//性能測試方法,通過測試block中方法執行的時間,比對設定的標準值和偏差覺得是否可以通過測試
self.measure {
var i: Int64 = 1
var r: Int64 = 1
while i < 100000000 {
r += i
i+=1
}
print("r=\(r)")
}
}
查看結果&調整期望
演示
代碼覆蓋率
配置選項:
Product->schemes->edit scheme

代碼覆蓋是基于文件查看的:新建一個CodeCoverage.swift 提供一個checkName方法。
測試代碼:
func testCodeCoverage() {
CodeCoverage.checkName(name: "riverli")
}
查看結果:

基本UI測試
交流群
移動開發交流群:264706196