2016-08-25 10 views
1

私はXcode UIテストアプリケーションにswiftを使用しています。テスト中のアプリケーションは、テストケースの通常のワークフローに影響する「アラートボックス」を表示することがあります。ポップアップがいつ現れるかを予測する方法はありません。テストケース1またはテストケース番号xに表示されることがあります。Xcode UIテストを使用したスワイプASYNCイベント処理

私は "警告ボックス"を却下し、テストケースの残りの部分を続けたいと思っていました。テストケースの通常のフローに影響を与えずに、迅速なXCUITestフレームワークを使用して同様の性質のASYNCイベントを処理するにはどうすればよいですか?

これまでのところ、私が発見した:

expectationForPredicate(exists, evaluatedWithObject: alertbox, handler: nil) 
waitForExpectationsWithTimeout(300, handler: nil) 

は、これは2つの理由で現実​​的ではありません。

  1. タイムアウトが
  2. を予測することはできません

    func testTestCase1 { 
        let expectation = expectationWithDescription("Alert Found! Dismissing") 
        do { 
         // ... 
         // test steps 
         // ... 
         expectation.fulfill() 
        } 
        waitForExpectationsWithTimeout(300) { 
         dimissAlert() 
        } 
    } 
    

Ref1のテストケースの流れをブロックしている: https://www.bignerdranch.com/blog/asynchronous-testing-with-xcode-6/
Ref2の: XCTest and asynchronous testing in Xcode 6
REF3:https://adoptioncurve.net/archives/2015/10/testing-asynchronous-code-in-swift/

スイート全体で非同期イベントを処理する一般的な方法はありますか?別のスレッドが「アラートボックス」イベントを表示するのを待っている間、テストを続行するにはどうすればよいですか?

乾杯!

答えて

1

スティーブンはそうです、UI中断モニタはうまく動作するはずです。私はあなたのテストにそれを追加することをお勧めします。

class UITests: XCTestCase { 
    let app = XCUIApplication() 

    override func setUp() { 
     super.setUp() 
     addUIInterruptionMonitorWithDescription("Alert") { (alert) -> Bool in 
      alert.buttons["OK"].tap() 
      return true 
     } 
     app.launch() 
    } 

    func testFoo() { 
     // example test 
    } 
} 
関連する問題