美文网首页
Xcode 单元测试

Xcode 单元测试

作者: 面试小集 | 来源:发表于2017-09-28 21:02 被阅读60次

    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

    相关文章

      网友评论

          本文标题:Xcode 单元测试

          本文链接:https://www.haomeiwen.com/subject/dnwvextx.html