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

7

在我的日常Xcode单元测试编码中,我只使用XCTestCase。还有其他一些类似于XCTestSuite、XCTest、XCTestRun的类似似乎很少使用。

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

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

defaultTestSuite
invokeTest
testCaseWithInvocation:
testCaseWithSelector:

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

我在查找有关上述XCTest类和方法的文档方面遇到了困难。

2个回答

6

这个问题非常好,我很好奇为什么这个问题被忽略了。

根据文档所说:

XCTestCase是XCTest的具体子类,应该是大多数开发人员为其项目创建测试的重写点。测试用例子类可以有多个测试方法,并支持每个测试方法执行的设置和拆卸以及类级别的设置和拆卸。

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

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

使用 XCTestSuite,您可以构建自己的测试套件,针对特定的测试用例子集,而不是默认套件([XCTestCase defaultTestSuite]),其中包含所有测试用例。

实际上,默认的 XCTestSuite 由运行时环境中找到的每个测试用例组成-所有子类中没有参数、返回值和前缀为“test”的方法。

那么 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


说实话,你在这里没有添加任何有价值的东西,只是文档链接。 - Farid

-3

打开你的Xcode,并使用cmd + shift + O来打开快速打开对话框,只需键入“XCTest”,您将找到一些相关文件,例如XCTest.h,XCTestCase.h......您需要进入此文件以查看它们提供的接口。

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


谢谢,这就是我找到问题中的类和方法的方式! - Boon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接