SwiftUI component UITest シリーズ Toggle 編
Sponsor Link
Toggle
対象要素の取得
Accessibility ID を付与することで、他の要素と同じように取得できます。
XCUIElementTypeQueryProvider からの取得には、switches を使用します。
Toggle を取得
1 2 3 4 5 6 |
let app = XCUIApplication() app.launch() let toggle = app.switches["MyToggle"] |
状態をチェック
状態は、value プロパティに保持しています。
ただし、String です。
ON 状態では、”1″ を、OFF 状態では、”0″ を持ちます。
操作
.tap() を行うことで、トグル動作を行います。
テストコード例
以下は、デフォルトが OFF のToggle を、タップ後に ON になっているかを確認するコードです。
Toggle テスト例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
let app = XCUIApplication() app.launch() let toggle = app.switches["MyToggle"] XCTAssertTrue(toggle.exists) // (1) XCTAssertEqual(toggle.value as! String, "0") // (2) toggle.tap() // (3) XCTAssertEqual(toggle.value as! String, "1") |
コード解説
- デフォルトで Off 設定になっていることをテスト
- Toggle に対して、タップしています
- タップ後に、On になっていることをテスト
アプリと、テストコード例
画面には、Toggle と Text が表示されていて、Toggle の状態に応じて Text のラベルを Onと Off に切り替えるアプリです。
Toggle テストアプリ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// // ContentView.swift // // Created by : Tomoaki Yagishita on 2020/10/28 // © 2020 SmallDeskSoftware // import SwiftUI struct ContentView: View { @State private var isOn:Bool = false var body: some View { VStack { Toggle("toggle", isOn: $isOn) .accessibility(identifier: "MyToggle") .padding() Text(isOn ? "On" : "Off") .accessibility(identifier: "MyToggleText") .padding() } } } |
Toggle アプリ テストコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
func testToggle() throws { let app = XCUIApplication() app.launch() let toggle = app.switches["MyToggle"] XCTAssertTrue(toggle.exists) XCTAssertEqual(toggle.value as! String, "0") let text = app.staticTexts["MyToggleText"] XCTAssertTrue(text.exists) XCTAssertEqual(text.label, "Off") toggle.tap() XCTAssertEqual(toggle.value as! String, "1") XCTAssertEqual(text.label, "On") } |
まとめ:SwiftUI の Toggle をテストする
SwiftUI の Toggle をテストする
- XCUIApplication から、accessibility ID 指定で Toggle を取得することができる
- XCUIApplication から、switches[“ID”] で Toggle を取得することができる
- Toggle の状態は、value プロパティから String として取得できる
- SwiftUI では、accessibility ID は、.accessibility modifier で付与する
説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。
Sponsor Link