我可以在XCTestCase类中共享状态吗?
class Tests: XCTestCase {
var person: Person!
override func setUp() {
person = Person()
}
override func tearDown() {
person = nil
}
func testExample() {
print("✅ testExample")
print(person)
XCTAssertTrue(true)
}
func testExample2() {
print("✅ testExample2")
print(person)
XCTAssertTrue(true)
}
}例如,在上面的代码中,我知道person对象在不同的测试方法中是不同的,但是在这两种测试方法中是否可能对person对象有相同的内存位置呢?
发布于 2022-06-02 15:26:30
对于测试是如何工作的,有许多流行的误解或困惑,所以我将借此机会澄清问题。内存是以非常奇怪的方式管理的:
每次运行测试方法>时,都会创建测试用例E 29<代码>E 110类E 110<>E 112的全新实例,并且该实例<代码>E 213<代码>E 114<代码>E 215<代码>E 116<代码>E 217<代码>E 118所有<代码>E 219/代码>E 120E 221/>每一个代码>E<223>代码><<225>测试代码>>代码><<225>代码><<225>代码><<225>代码>
因此,您不需要在每个测试方法(setUp)之前为setUp实例变量创建Person对象,因为在每个测试方法之前,您将得到一个全新的测试实例,从而得到一个全新的Person对象。
var person: Person! = Person()但是,在每个测试方法之后,您确实需要tearDown来对person实例变量进行处理,因为否则最终会有很多Person对象。对于一个微小的人来说,这可能并不重要,但这是一个很好的习惯,因为你可以在没有意识到的情况下使用大量的记忆。
https://stackoverflow.com/questions/72478486
复制相似问题