[SwiftUI] [UnitTest] テストの作り方 ( Picker 編)

SwiftUI component UITest シリーズ Picker 編

Picker

対象要素の取得

SwiftUI の Picker は、UITest 視点での部品としては、 Picker と Wheel に分けられます。

Picker には、ラベルの情報が保持していて、選択情報は、Wheel 側が保持しています。

ところが、この Wheel に accessibility ID を付与できません。
Accessibility ID を付与しても、期待する要素を取得することができません。

Picker には、Accessibility ID を付与できます。そして、Picker に対して、Wheel は1つであることを考えると、以下のようなコードで、該当 Wheel を取得することができます。

example code

状態のチェック

Wheel の状態をチェックすることで、(SwiftUI での) Picker で選択された状態をチェックできます。

value プロパティに、String で 保持されています。

ただし、.tag で設定されたものではなく、ラベルとして使用されている String です。

Wheel での選択を取得

値の設定

以下のメソッドを使うことで、該当位置まで移動でます。

Picker 該当位置まで移動 method

Apple のドキュメントは、こちら

Wheel での選択

テストコード例

以下は、Picker で “Value3” という選択肢を選択して、その後、Wheel がその値を持っているかを確認しています。

Picker テスト例
コード解説
  1. Picker を取得 (Wheel を取得する必要があることに注意)
  2. “Value3” という行を選択
  3. 選択操作後に、Wheel の値をテスト



アプリと、テストコード例

画面に、Picker と Picker での選択に連動してアップデートされる Text が表示されるアプリです。

Picker テストアプリ

「Picker テストアプリ」

Picker テストアプリ
Picker アプリ テストコード

まとめ:SwiftUI の Picker をテストする

SwiftUI の Toggle をテストする
  • XCUIApplication から、accessibility ID 指定で Picker を取得し、そこから、Wheel を取得する
  • func adjust(toPickerWheelValue pickerWheelValue: String) を使って、指定行を選択する
  • Picker の選択値は、value プロパティから String として取得できる
  • SwiftUI では、accessibility ID は、.accessibility modifier で付与する

説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です