美文网首页
iOS XCTest单元测试之接口测试

iOS XCTest单元测试之接口测试

作者: coco_CC | 来源:发表于2018-12-29 11:38 被阅读37次

    App测试是一个好的App不可缺少的部分。每个App都是由一个个小的功能组合到一起的。而这些小的功能又是由一个个函数或者说算法组合到一起的。单元测试就是对这些小的功能或者函数进行测试,良好的单元测试会让代码的健壮性提高很多。XCTest就是XCode为我们提供的一个框架,它提供了各个层次的测试。

    单元测试的使用场景

    • 对API接口的单元测试,测试驱动开发。
    • 测试网络接口的可用性。不需要经过多次操作到某个界面再去测试该接口。如分享功能,一般需要特定的逻辑才会触发。若直接测试其API就很方便了。
    • API性能测试。

    单元测试

    • 所有以test开头的实例方法(不能有参数)都是一个完整的单元测试的case。

    XCTest提供了XCTestExpectation来进行异步测试,即可在指定时机使用其fulfill实例方法开始执行断言命令。例如以下是一个完整的网络请求的测试样例,可用于测试server端是否正常,要在对应的block中进行断言。

    XCTest单元测试.png
    • 最左边有个小图标,点击之后即可执行该测试case。

    即:异步网络请求操作正常执行,但断言命令仅在[expectation fulfill];结束后才开始执行,这样能确保得到网络请求的返回结果后执行相应断言。同时,可设置超时时间及对应操作。
    否则,就需要使用定时机制等处理类似情况。

    断言命令

    XCTFail(format…) 生成一个失败的测试;
    
    XCTAssertNil(a1, format...)为空判断,a1为空时通过,反之不通过;
    
    XCTAssertNotNil(a1, format…)不为空判断,a1不为空时通过,反之不通过;
    
    XCTAssert(expression, format...)当expression求值为TRUE时通过;
    
    XCTAssertTrue(expression, format...)当expression求值为TRUE时通过;
    
    XCTAssertFalse(expression, format...)当expression求值为False时通过;
    
    XCTAssertEqualObjects(a1, a2, format...)判断相等,[a1 isEqual:a2]值为TRUE时通过,其中一个不为空时,不通过;
    
    XCTAssertNotEqualObjects(a1, a2, format...)判断不等,[a1 isEqual:a2]值为False时通过,
    
    XCTAssertEqual(a1, a2, format...)判断相等(当a1和a2是 C语言标量、结构体或联合体时使用,实际测试发现NSString也可以);
    
    XCTAssertNotEqual(a1, a2, format...)判断不等(当a1和a2是 C语言标量、结构体或联合体时使用);
    
    XCTAssertEqualWithAccuracy(a1, a2, accuracy, format...)判断相等,(double或float类型)提供一个误差范围,当在误差范围(+/-accuracy)以内相等时通过测试;
    
    XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format...) 判断不等,(double或float类型)提供一个误差范围,当在误差范围以内不等时通过测试;
    
    XCTAssertThrows(expression, format...)异常测试,当expression发生异常时通过;反之不通过;(很变态)
    
    XCTAssertThrowsSpecific(expression, specificException, format...) 异常测试,当expression发生specificException异常时通过;反之发生其他异常或不发生异常均不通过;
    
    XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format...)异常测试,当expression发生具体异常、具体异常名称的异常时通过测试,反之不通过;
    
    XCTAssertNoThrow(expression, format…)异常测试,当expression没有发生异常时通过测试;
    
    XCTAssertNoThrowSpecific(expression, specificException, format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;
    
    XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format...)异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过.
    

    相关文章

      网友评论

          本文标题:iOS XCTest单元测试之接口测试

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