我想知道在XCtesting中是否有办法使用单位来指定在不同测试用例之间没有拆除的常量变量?我意识到,通常单元测试的最佳实践是尽可能保持测试的自包含,但在我目前的情况下,如果能够这样做并在测试用例之间保持一个恒定的变量,它将使测试执行得更快。 / p>
目前,我称之为
的任何类型的init函数override init() {
super.init()
}
给我一个EXC_BAD_INSTRUCTION错误。如果我不能在XCTestCase中使用init(),我还可以使用另一种解决方法吗?
答案 0 :(得分:5)
尝试将变量移到XCTestCase
类之外。
import XCTest
var counter = 0 // Note this is outside the class declaration
class MyTests: XCTestCase {
override func setUp() {
super.setUp()
counter++
print("Counter: \(counter)")
}
func testOne() {
...
}
func testTwo() {
...
}
func testThree() {
...
}
}
这给出了这样的输出。
...
Counter: 1
...
Counter: 2
...
Counter: 3
...
答案 1 :(得分:-1)
您可以使用类 setUp
和tearDown
方法来实现此目的。在第一个测试方法开始之前调用类setUp
方法,并在所有测试方法完成后调用类tearDown
方法一次。
我的理解是,这些仅用于处理您描述的测试范围的状态。 Apple上有一些good documentation。
这种方法的优点是,如果不是单独的测试,状态至少保持在测试类的本地。