【问题标题】:XCTestCase optional instance variableXCTestCase 可选实例变量
【发布时间】:2018-02-01 12:23:12
【问题描述】:

当我将可选实例变量设置为非 nil 时,为什么它是 nil?

代码:

class FooTests: XCTestCase {
    var foo: Int?

    func test_A_setFoo() {
        XCTAssertNil(foo)
        foo = 1
        XCTAssertNotNil(foo)
    }

    func test_B_fooIsNotNil() {
        XCTAssertNotNil(foo)
    }
}

test_A_setFoo()succeeds 而test_B_fooIsNotNil() 失败

【问题讨论】:

  • 只使用静态属性。

标签: swift xctest


【解决方案1】:

来自Flow of Test Execution (强调):

对于每个类,测试从运行类设置方法开始。对于每个测试方法,分配一个新的类实例并执行其实例设置方法。之后它运行测试方法,然后是实例拆卸方法。该序列对类中的所有测试方法重复。在类中的最后一个测试方法拆解运行后,Xcode 执行类拆解方法并移动到下一个类。重复此序列,直到所有测试类中的所有测试方法都已运行。

在您的情况下,test_B_fooIsNotNil() 在新实例上执行, 其中foo 属性为nil

常用设置代码可以放入setUp()类方法中 或setUp() 实例方法,请参阅 Understanding Setup and Teardown for Test Methods

【讨论】:

  • 够清楚:)
  • 我一直在单元测试中避免使用实例变量,因为我不知道这一点。这真的改变了一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多