どちらも可能ですが、var 2が好ましいです。 VAR 1解決のために次のシナリオを検討してください:
class State {
var val: Int = 0
}
class TestClass: XCTestCase {
let state = State()
func test1() {
state.val = 5
XCTAssertEqual(5, state.val)
}
func test2() {
XCTAssertEqual(0, state.val)
}
}
結果が最初に実行されるテストに依存してこの方法です。 test2
が最初の場合、両方のテストが成功します。他の方法では、2番目のテストは失敗します。 VAR 2解決のために
class TestClass: XCTestCase {
func test1() {
let state = State()
state.val = 5
XCTAssertEqual(5, state.val)
}
func test2() {
let state = State()
XCTAssertEqual(0, state.val)
}
}
両方のテストに関係なく、最初に実行されるかテスト成功しません。これにより、多くのシナリオではvar 2のソリューションが優先されます。
VAR 1がより便利よりVAR 2ある場合があります。SUTには多くの依存関係があり、テストごとに作成コードをコピーして貼り付けなければなりません。その後、クラス変数として依存関係を宣言しています必見使用試験setUp
(そしておそらくtearDown
)あなたが宣言以来、各テスト
class TestClass: XCTestCase {
var dep1: Dependency1!
var dep2: Dependency2!
var sut: SUT!
func setUp() {
dep1 = Dependency1()
dep2 = Dependency2()
sut = SUT(dep1, dep2)
}
}
最初の例は、コンパイルされません前に、それらの状態が更新されることを保証することができます'app'を定数として使用し、' setUp'でその値を変更しようとしています –
@ MaximKosovありがとう、更新済み – Daniel