[Swift] Unit/UI Test  メモ #2


XCTest

前回のメモ#1はここへ

基本

メソッド 意味
setUp 各テストが始まる前に実行
tearDown 各テストが終わった後に実行
setUpWithError 各テストが始まる前に実行、 throws付き
tearDownWithError 各テストが終わった後に実行、throws付き
testExample 各テスト実施
testPerformanceExample 性能テスト

テンプレート(Xcode 11.4 )

throws付き両方のサンプルテストメソッドをマークします。
ただし、setup()、tearDown()、非スローテストメソッドを使用できます。
(非推奨ではありません。)

override func setUpWithError() throws {}
override func tearDownWithError() throws {}
func testExample() throws {}
func testPerformanceExample() throws {}

※参照:XCTest Error Handling Improvements

Realm

Realmアプリを使用してテストする最も簡単な方法
・デフォルトのレルムをテストごとに新しいファイルに設定します。
理由:アプリケーションデータを上書きしたり、テスト間で状態を漏らしたりしないようにするため、

realmTests.swift
class TestCaseBase: XCTestCase {
    override func setUp() {
        super.setUp()
        Realm.Configuration.defaultConfiguration.inMemoryIdentifier = self.name
    }
}

参照: Realm

UI Test

sampleUITests.swift
 func testExample() {
    let app = XCUIApplication()
    app.buttons["Test"].tap()
    app.staticTexts["touched Test Button: "].tap()
}

コードカバレッジ(Code Coverage )

実際にテストによって実行されているアプリコードを通知するので、アプリコードのどの部分が(まだ)テストされていないかがわかります。

※参照:raywenderlich test tutorial