【问题标题】:iOS Unit Testing: XCTestSuite, XCTest, XCTestRun, XCTestCase methodsiOS 单元测试:XCTestSuite、XCTest、XCTestRun、XCTestCase 方法
【发布时间】:2014-02-13 05:28:46
【问题描述】:

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

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

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

defaultTestSuite
invokeTest
testCaseWithInvocation:
testCaseWithSelector:

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

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

【问题讨论】:

    标签: unit-testing ios7 tdd xcode5


    【解决方案1】:

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

    正如文档所说:

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

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

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

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

    实际上,默认的 XCTestSuite 是由在运行时环境中找到的每个测试用例组成的——所有方法都没有参数,没有返回值,并且在 XCTestCase 的所有子类中都以“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

    【讨论】:

      【解决方案2】:

      启动你的Xcode,并使用cmd + shift + O打开快速打开对话框,只需输入'XCTest',你会发现一些相关文件,如XCTest.h,XCTestCase.h ...你需要进入这个文件以检查他们提供的接口。

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

      【讨论】:

      • 谢谢,我就是这样找到问题中的类和方法的!
      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2017-08-23
      • 2019-10-09
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多