iOS单元测试:XCTestSuite,XCTest,XCTestRun,XCTestCase方法

时间:2014-01-22 22:09:34

标签: unit-testing ios7 tdd xcode5

在我使用Xcode编写的日常单元测试中,我只使用XCTestCase。还有其他类似乎没有得到太多使用,例如:XCTestSuite,XCTest,XCTestRun。

什么是XCTestSuite,XCTest,XCTestRun?你什么时候使用它们?

此外,XCTestCase标头有一些方法,例如:

defaultTestSuite
invokeTest
testCaseWithInvocation:
testCaseWithSelector:

如何以及何时使用上述内容?

我无法找到有关上述XCTest类和方法的文档。

2 个答案:

答案 0 :(得分:2)

嗯,这个问题非常好,我只是想知道为什么这个问题被忽略了。

正如文件所说:

  

XCTestCase 是XCTest的具体子类,它应该是覆盖点     大多数开发人员为其项目创建测试。测试用例子类可以有     多种测试方法,并支持为每次测试执行的设置和拆除     方法以及班级设置和拆除。

另一方面,这是 XCTestSuite 定义的:

  

XCTest的具体子类,XCTestSuite是测试用例的集合。或者,测试套件可以提取要自动运行的测试。

好吧,使用XCTestSuite,您可以为特定的测试用例子集构建自己的测试套件,而不是默认套件([XCTestCase defaultTestSuite]),这是所有测试用例。

实际上,默认的XCTestSuite由在运行时环境中找到的每个测试用例组成 - 所有没有参数的方法,没有返回任何值,并且在XCTestCase的所有子类中都带有'test'前缀。 < / p>

XCTestRun 类怎么样?

  

测试运行收集有关测试执行的信息。明确失败   测试断言被分类为“预期”,而失败来自无关或   未被捕获的例外被归类为“意外”。

使用XCTestRun,您可以在测试开始时记录startDatetotalDurationfailureCount等信息,或者在完成测试时记录hasSucceeded之类的信息,因此你得到了运行测试的结果。 XCTestRun为您提供了可控性,可以集中关注测试中发生或发生的事情。

返回XCTestCase,如果您阅读源代码,您会注意到有testCaseWithInvocation:testCaseWithSelector:的方法。 我建议你做更多挖掘。

他们如何一起工作?

我发现在Quick's QuickSpec source file中有一个很棒的解释。

  

XCTest自动编译包含的XCTestCase子类列表    在测试目标中。它迭代该列表中的每个类,并创建    每个测试方法的该类的新实例。然后创建一个    “调用”来执行该测试方法。调用是一个实例    NSInvocation,表示在Objective-C中发送的单个消息。    调用在XCTestCase实例上设置,并运行测试。

一些链接:

http://modocache.io/probing-sentestingkit https://github.com/Quick/Quick/blob/master/Sources/Quick/QuickSpec.swift https://developer.apple.com/reference/xctest/xctest?language=objc

答案 1 :(得分:-2)

启动你的Xcode,并使用cmd + shift + O打开快速打开的对话框,输入'XCTest',你会发现一些相关的文件,比如XCTest.h,XCTestCase.h ...你需要去在此文件中查看它们提供的接口。

有一个关于XCTest的好网站:http://iosunittesting.com/xctest-assertions/