首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCTestCase类中的共享状态?

XCTestCase类中的共享状态?
EN

Stack Overflow用户
提问于 2022-06-02 15:12:32
回答 1查看 47关注 0票数 1

我可以在XCTestCase类中共享状态吗?

代码语言:javascript
复制
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对象有相同的内存位置呢?

EN

回答 1

Stack Overflow用户

发布于 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对象。

代码语言:javascript
复制
    var person: Person! = Person()

但是,在每个测试方法之后,您确实需要tearDown来对person实例变量进行处理,因为否则最终会有很多Person对象。对于一个微小的人来说,这可能并不重要,但这是一个很好的习惯,因为你可以在没有意识到的情况下使用大量的记忆。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72478486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档