概要
前回 Swift のユニットテストを書いてみました
今回は UI のテストを書いてみました
環境
- macOS 10.13.4
- Xcode 9.3.1 (9E501)
テスト対象の UI を作成する
StoryBoard を使って簡単な UI を作成します
とりあえず今回はテキストラベルを 1 つ配置しましょう
そして作成したラベルに ID
を設定しましょう
テストではこの ID を使ってラベルのコンポーネントを取得します
テストを記載する
ではテストを書いていきます
テストを記載するのは testUITests
になります
mport XCTest
class testUITests: XCTestCase {
override func setUp() {
super.setUp()
continueAfterFailure = false
XCUIApplication().launch()
}
override func tearDown() {
super.tearDown()
}
func testExample() {
let label1 = XCUIApplication().staticTexts["label1"]
XCTAssertEqual(label1.label, "OK")
}
}
最大のポイントは XCUIApplication
になります
これを使って端末の起動や UI コンポーネントの取得、探索を行います
そして取得した各コンポーネントのプロパティにアクセスして文字列や設定されている色などを取得します
あとはユニットテストのときと同じで XCTAssert
を使って値の比較をすれば OK です
各コンポーネントの取得方法はコンポーネントごとに異なるので詳しくはこちらを御覧ください
テストを実行する
Product -> Test で実行しましょう
Cmd + u
でも実行できます
ユニットテストも実行されます
ユニットテストの後に UI のテストが実行されるので待ちましょう
各テストごとに結果が表示されます
またコンソールには各テストの実行時間とログのパスが表示されます
最後に
Swift + Xcode で UI のテストを記載する方法を紹介してみました
ユニットテストと基本的には同じように書けます
UI コンポーネントを取得する方法だけ UI テスト独自の方法になるかなと思います
今回はかなり簡単な処理しか書いていないので考慮していませんが実際のアプリになるとネットワーク通信などが発生します
その場合はちゃんと通信を待ってから UI コンポーネント上の値をテストしなければなりません
その辺りも後々紹介できればなと思っています
0 件のコメント:
コメントを投稿