iOS XcodeのNSPredicate
に類似した述語を達成する方法はありますか?Android Espressoの特定のイベントを待つ方法はありますか?自動テストのAndroid Espressoの述語ですか?
iOSの場合はexpectationForPredicate
とwaitForExpectationsWithTimeout
をXCTest
の一部として呼び出すことができます。
私はiOSとAndroid用の2つの同様のアプリをテストしています。 iOS版では、私は次の操作を行うことができますアンドロイドで
let app = XCUIApplication();
let condition = app.staticTexts["Text That Displays After Event"]
let exists = NSPredicate(format: "exists == true")
expectationForPredicate(exists, evaluatedWithObject: condition, handler: nil)
waitForExpectationsWithTimeout(5, handler: nil)
XCTAssert(app.staticTexts["Text That Displays After Event"].exists)
私ができる最善のは、アイドリングリソースを登録し、イベントを手動で起こったかどうかをチェック数秒間待っています。
long waitingTime = 3 * DateUtils.SECOND_IN_MILLIS;
IdlingPolicies.setMasterPolicyTimeout(waitingTime * 2, TimeUnit.MILLISECONDS);
IdlingPolicies.setIdlingResourceTimeout(waitingTime * 2, TimeUnit.MILLISECONDS);
IdlingResource idlingResource = new ElapsedTimeIdlingResource(waitingTime);
Espresso.registerIdlingResources(idlingResource);
onView(withId(R.id.id_in_next_event)).check(matches(isDisplayed()));
Espresso.unregisterIdlingResources(idlingResource);
これを行うにはより良い方法が必要です。
おかげで、これは素晴らしい作品。それは、私が必要としていたボレーのリクエストを待っています。 – Jack
@ジャック:私はそれに疲れているだろう。これは、すべてのUI操作が完了するのを待つだけです。 Volleyは、完全に別個の非同期ライブラリです。私はあなたがダウンロード操作はちょうど本当に高速です(これは良いですが、それは後で爆破するつもりだと思います)。 – DeeV
@DeeV 'waitForIdleSync()'の呼び出しは絶対に必要ありません。エスプレッソはアプリがアイドル状態になるのを待っている。 – thaussma