XCTestCase可选实例变量

Pet*_*rbo 3 xctest swift

为什么实际上将我的可选实例变量设置为nil时却为nil?

码:

class FooTests: XCTestCase {
    var foo: Int?

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

    func test_B_fooIsNotNil() {
        XCTAssertNotNil(foo)
    }
}
Run Code Online (Sandbox Code Playgroud)

test_A_setFoo()成功而test_B_fooIsNotNil()失败

Mar*_*n R 5

测试执行流程 (添加重点):

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

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

可以将通用设置代码放入setUp()类方法或setUp()实例方法中,请参阅 了解测试方法的设置和拆卸