在我使用Xcode编写的日常单元测试中,我只使用XCTestCase。还有其他类似乎没有得到太多使用,例如:XCTestSuite,XCTest,XCTestRun。
什么是XCTestSuite,XCTest,XCTestRun?你什么时候使用它们?
此外,XCTestCase标头有一些方法,例如:
defaultTestSuite
invokeTest
testCaseWithInvocation:
testCaseWithSelector:
如何以及何时使用上述内容?
我无法找到有关上述XCTest类和方法的文档。
答案 0 :(得分:2)
嗯,这个问题非常好,我只是想知道为什么这个问题被忽略了。
正如文件所说:
XCTestCase 是XCTest的具体子类,它应该是覆盖点 大多数开发人员为其项目创建测试。测试用例子类可以有 多种测试方法,并支持为每次测试执行的设置和拆除 方法以及班级设置和拆除。
另一方面,这是 XCTestSuite 定义的:
XCTest的具体子类,XCTestSuite是测试用例的集合。或者,测试套件可以提取要自动运行的测试。
好吧,使用XCTestSuite
,您可以为特定的测试用例子集构建自己的测试套件,而不是默认套件([XCTestCase defaultTestSuite]
),这是所有测试用例。
实际上,默认的XCTestSuite由在运行时环境中找到的每个测试用例组成 - 所有没有参数的方法,没有返回任何值,并且在XCTestCase的所有子类中都带有'test'前缀。 < / p>
XCTestRun
类怎么样?
测试运行收集有关测试执行的信息。明确失败 测试断言被分类为“预期”,而失败来自无关或 未被捕获的例外被归类为“意外”。
使用XCTestRun
,您可以在测试开始时记录startDate
,totalDuration
,failureCount
等信息,或者在完成测试时记录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/