2016-03-30 1 views
0

私のコントローラのUIテストを作成しようとしています。私はテキストフィールドとタップボタンを塗りつぶし、ダイアログが現れるのを待っています。表示されたら、Okボタンをタップして、表示されているコントローラーを確認します。UIテスト - ダイアログを待ち、OKボタンをタップしてコントローラを確認します

これは私の試験方法の終わりである:

let alert = app.alerts["Error"] 
let exists = NSPredicate(format: "exists == 1") 
self.expectationForPredicate(exists, evaluatedWithObject: alert, handler: nil) 
self.waitForExpectationsWithTimeout(5.0) { (error) in 

    XCTAssertNil(error, "Something went horribly wrong") 
    alert.buttons["Ok"].tap() 
    XCTAssertEqual(app.navigationBars.element.identifier, "RegistrationViewController") 
} 

問題は、そのテストは失敗と評価されているが、私は電話を見たときにダイアログが表示され、[OK]ボタンをタップすると、コントローラも結構です。 - アラート

私は、問題はそれをタップして何とかそこにあると思いますが見つかりません一致

UIテストの失敗:

私は、デバッグウィンドウでこの失敗を取得します。どうすれば修正できますか?私が間違っていることは何ですか?ありがとう

答えて

3

waitforExpectationsWithTimeout()は、タイムアウトを超えたときにのみ完了ハンドラを呼び出します。非同期待機コールの下にコントローラアサーションを移動するだけです。

let alert = app.alerts["Error"] 
let exists = NSPredicate(format: "exists == 1") 

expectationForPredicate(exists, evaluatedWithObject: alert, handler: nil) 
waitForExpectationsWithTimeout(timeout, handler: nil) 

alert.buttons["Ok"].tap() 
XCTAssertEqual(app.navigationBars.element.identifier, "RegistrationViewController") 
+0

これは前に試したことですが、私にとっては同じ結果です。それでも私は、警告ダイアログが見つからないという同じ失敗に終わります。 –

+0

これはシステムアラートですか、手動で作成したアラートですか? –

+0

助けてくれてありがとう。あなたのソリューションは機能します。問題は、ダイアログの確認ボタンがOKだったのですが、私のテストではOKです。アクセシビリティ識別子が大文字と小文字を区別していることはわかりませんが、今は忘れないでください:) –

関連する問題