数日前、私は技術評価の目的で '新しい' XCUI Testingフレームワークを使い始めました。非常に頻繁にテストが失敗する(通常、.tap()を使ったボタン押下は単にボタンアクションをトリガーしない)ので、私はシステムがかなり不安定であることがわかります.Xcodeを再起動してDerivedDataキャッシュをクリアして再度動作させる必要があります。しかし、この1つのことは私が一生働くことができません - それは利用可能な最も簡単なUIテストのユースケースです:UILabelの新しいテキスト値がXCUIテスト内で更新されない
私はUIButtonとUILabelを持っています。 UILabelは当初、テキスト「初期テキスト」を持っています。ボタンのラベルは「メッセージを表示」です。ボタンを押すと、ラベルのテキストが「新しいテキスト」に変更されます。そして明らかにこれは、アプリケーションを実行するときに動作します。 ;私は、次のXCUIテストを実行する場合)
ただし、(アプリケーションのインスタンスを初期化されていたと打ち上げ()セットアップでED()):
app.buttons["SHOW MESSAGE"].tap()
XCTAssert(app.staticTexts["new text"].exists)
テストが100%の時間を失敗しました。 print(app.staticTexts.debugDescription)
を使用して静的テキストを印刷した後(.tap()呼び出し後)、私のラベルはそこに「初期テキスト」の元のテキストが表示されます。
このXCUIのすべてはまだ本当にアルファのものか何ですか?
まあ、私もそれを試してみました。私はラベルのアクセシビリティ識別子を 'messageLabel'に設定し、そのように試みましたが、次のエラーが出ました:' Assertion Failure:XCTAssertEqual failed :("オプション(" new text ")")が( "Optional(" initialテキスト ")") - ' – Matti
新しい値を見つけるためにビュー階層が更新されていないようです。 expectationForPredicate(またはexpectationWithDescription)とwaitForExpectationsWithTimeoutを数秒間試してみてください。これにより、チェックが発生するたびにビュー階層が更新されます。 – Oletha
また、値がアプリコードの複数の場所に設定されている可能性があります。ストーリーボードまたはペン先のラベルに値が設定されていますか?これは、ボタンが押されたときのイベントハンドラの値を変更すると、XCTestの値を上書きすることがあります。すべてのラベル値をプログラムで設定し、storyboard/nibから値を削除します。 – Oletha