XCTestCase 可选实例变量
Posted
技术标签:
【中文标题】XCTestCase 可选实例变量【英文标题】:XCTestCase optional instance variable 【发布时间】: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()
失败
【问题讨论】:
只使用静态属性。 【参考方案1】:来自Flow of Test Execution (强调):
对于每个类,测试从运行类设置方法开始。对于每个测试方法,分配一个新的类实例并执行其实例设置方法。之后它运行测试方法,然后是实例拆卸方法。该序列对类中的所有测试方法重复。在类中的最后一个测试方法拆解运行后,Xcode 执行类拆解方法并移动到下一个类。重复此序列,直到所有测试类中的所有测试方法都已运行。
在您的情况下,test_B_fooIsNotNil()
在新实例上执行,
其中foo
属性为nil
。
常用设置代码可以放入setUp()
类方法中
或setUp()
实例方法,请参阅
Understanding Setup and Teardown for Test Methods
【讨论】:
够清楚:) 我一直在单元测试中避免使用实例变量,因为我不知道这一点。这真的改变了一切。以上是关于XCTestCase 可选实例变量的主要内容,如果未能解决你的问题,请参考以下文章