Xcode创建多个测试类示例来运行测试?

wgeznvg7  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(91)

我总是假设对于一个给定的测试类,Xcode将创建该类的单个对象,然后按顺序运行测试。但是当我尝试这个例子时(这个方案的并行测试选项是关闭的),看起来Xcode正在创建测试类的多个示例,然后在它们上独立运行测试。
这是否会有效地消除对tearDown的需要,因为无论如何都会丢弃该示例。

final class ExampleTests: XCTestCase {
    private let dataStorage: DataStorage = {
        print("*** Creating data storage")
        return DataStorage()
    }()

    func test1() {
        print("*** Data storage value: \(dataStorage.number)")
        dataStorage.number += 1
        XCTAssertEqual(dataStorage.number, 2)
    }

    func test2() {
        print("*** Data storage value: \(dataStorage.number)")
        dataStorage.number += 1
        XCTAssertEqual(dataStorage.number, 2)
    }

    func test3() {
        print("*** Data storage value: \(dataStorage.number)")
        dataStorage.number += 1
        XCTAssertEqual(dataStorage.number, 2)
    }

    func test4() {
        print("*** Data storage value: \(dataStorage.number)")
        dataStorage.number += 1
        XCTAssertEqual(dataStorage.number, 2)
    }
}

class DataStorage {
    var number = 1
}

字符串
这就是结果:

*** Creating data storage
*** Creating data storage
*** Creating data storage
*** Creating data storage
*** Data storage value: 1
*** Data storage value: 1
*** Data storage value: 1
*** Data storage value: 1


我们可以看到数据存储对象被创建了多次->多个ExampleTests对象被创建。
我尝试了100个这样的测试,在运行任何测试之前创建了100个对象。

rks48beu

rks48beu1#

在xUnit中,为每个测试创建一个单独的示例。所有这些都是在运行任何测试之前创建的。这就是为什么setUp和tearDown很重要的原因:它们给予您可以控制何时创建和销毁对象。参见Most Swift Devs Are Wrong About XCTestCase tearDown…

相关问题