我理解一个类是未来对象的蓝图,我试图使用Swift更好地掌握OOP架构。所以我的问题是,从类和实例角度运行测试时会发生什么过程。我不认为我实际上已经创建了我的XCTestCase子类的实例,但Xcode似乎自动执行此操作。当我正在构建更多激情项目应用程序时,我通常必须创建一个实例才能使用它,但在测试中我没有那种感觉,它只是通过命中(Command + U)。我想了解一个实例是否甚至可以创建,如果是这样的话?
以下是蓝图XCTestCase子类的一些示例代码,但我从来没有必要实际实例化此类:
import XCTest
@testable import FirstDemo
class FirstDemoTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
答案 0 :(得分:1)
XCTestCase
类的实例化方式与所有其他类相同。
只是它们是在separate process
中创建的,并且所有内容都由XCTest框架管理,要么运行所有测试,要么实例化与测试目标相关的所有类,要么选择单独的测试,单独的类是实例
您可以在此处调查XCTest源代码:https://github.com/apple/swift-corelibs-xctest
答案 1 :(得分:1)
当您运行应用程序时,您的代码不负责创建应用程序委托:UIKit框架承担此责任。
同样,当您运行测试时,测试运行器负责实例化您的测试用例。它通过搜索所有已加载类的列表来查找它们是一种XCTestCase。然后它询问每个类的测试调用。然后,它可以为这些测试方法创建测试用例实例并运行测试。
这是如何工作的关键是Objective-C运行时提供的丰富元数据以及它提供的元编程接口,用于询问和操纵该信息。