OC单元测试

Posted pengyuan_D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC单元测试相关的知识,希望对你有一定的参考价值。

断言测试

下面一共18个断言(SDK中也是18个,其含义转自ios UnitTest 学习笔记,真心佩服原文的博主,部分宏小弟已经测试过):

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

特别注意下XCTAssertEqualObjects和XCTAssertEqual。

XCTAssertEqualObjects(a1, a2, format...)的判断条件是[a1 isEqual:a2]是否返回一个YES。

XCTAssertEqual(a1, a2, format...)的判断条件是a1 == a2是否返回一个YES。

对于后者,如果a1和a2都是基本数据类型变量,那么只有a1 == a2才会返回YES。


以上是关于OC单元测试的主要内容,如果未能解决你的问题,请参考以下文章

OC 单元测试学习笔记

如果发生单元测试失败,Maven 报告插件不会执行

在 MS C# 单元测试中,如何断言发生了 ArgumentException?

标量函数在存储过程中使用时在 SQL Server 中发生请求超时问题

6-Perl 标量

Perl教程 - 标量