まとめ
- 公式に提供されている XCUITest を使うぞ
XCUITest でできること
正しさやパフォーマンスのテストが可能
単体テスト※1 | UI テスト | |
---|---|---|
正しさのテスト | o | o |
パフォーマンスのテスト | o | o |
※1 この分け方には異論があるけど、公式ではこんな表になってた
テストの各ステップでのスナップショット
取れるらしい。
すごい。
登場する主要なクラス
これだけは覚えておきたい主要クラス4つ:
-
XCUIApplication
- テスト対象のアプリケーションを起動/終了するためのプロキシ
- テスト対象のアプリケーションは別プロセスで起動される
- 引数と環境変数を指定可能
- テスト対象のアプリケーションを起動/終了するためのプロキシ
-
XCUIElement
- テスト対象の UI 要素にタップやテキストを入力するためのプロキシ
-
XCUIElementQuery
- アプリケーションから
XCUIElement
を取得するための検索クエリ - プログラマ側によってインスタンス作成はしない
-
XCUIElementTypeQueryProvider
が要求するプロパティ群の型なので、XCUIElement
のプロパティがこの型を持っているという意味
-
- 要素の検索系:
- 子孫要素を検索:
- 直接の子要素を検索:
- 指定した要素を含む要素を検索:
- 条件に当てはまる要素を検索:
- 要素の指定系:
- 添字アクセス
- 要素番号アクセス
- 選択された要素アクセス
- アプリケーションから
-
XCUIElementTypeQueryProvider
-
XCUIElementQuery
のショートハンド関数群を提供する protocol- 例えば
descendants(.button)
をbuttons
と書ける
- 例えば
- 実装クラスは
XCUIElement
とXCUIElementQuery
-
評価タイミング
要素が消えちゃった後で、消えた要素の XCUIElement
を操作したりすると死ぬので、要素の選択・検索・操作の評価タイミングを把握する必要がある:
-
XCUIElement
- UI への入出力系メソッドの評価時
-
XCUIElementQuery
-
.count
や.allElementsBundByAccessibilityElement
などの評価時
-
参考資料
-
User Interface Testing - Guide and Sample Code
- UI テストのチュートリアル
-
Testing User Interface Elements - API Reference
- いつもの API リファレンス
-
UI Testing in Xcode - WWDC 2015
- Presentation Slides (PDF)
- Xcode を活かした UI テストのやり方が勉強になる