gpt4 book ai didi

unit-testing - iOS 单元测试 : XCTestSuite, XCTest、XCTestRun、XCTestCase 方法

转载 作者:行者123 更新时间:2023-12-04 05:21:06 32 4
gpt4 key购买 nike

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

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

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

defaultTestSuite
invokeTest
testCaseWithInvocation:
testCaseWithSelector:

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

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

最佳答案

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

正如文件所说:

XCTestCase is a concrete subclass of XCTest that should be the override point for most developers creating tests for their projects. A test case subclass can have multiple test methods and supports setup and tear down that executes for every test method as well as class level setup and tear down.



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

A concrete subclass of XCTest, XCTestSuite is a collection of test cases. Alternatively, a test suite can extract the tests to be run automatically.



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

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

呢? XCTestRun 类(class)?

A test run collects information about the execution of a test. Failures in explicit test assertions are classified as "expected", while failures from unrelated or uncaught exceptions are classified as "unexpected".



XCTestRun ,您可以记录信息如 startDate , totalDuration , failureCount等测试开始时,或类似 hasSucceeded完成后,您将获得运行测试的结果。 XCTestRun使您能够控制测试中正在发生或发生的事情。

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

它们如何协同工作?

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

XCTest automatically compiles a list of XCTestCase subclasses included in the test target. It iterates over each class in that list, and creates a new instance of that class for each test method. It then creates an "invocation" to execute that test method. The invocation is an instance of NSInvocation, which represents a single message send in Objective-C. The invocation is set on the XCTestCase instance, and the test is run.



一些链接:

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

关于unit-testing - iOS 单元测试 : XCTestSuite, XCTest、XCTestRun、XCTestCase 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21295082/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com