2

Google Espresso テストフレームワークでソフトウェアをテストするには、次の問題があります。

プログラムの開始時に、スプラッシュ スクリーンが開始され、アプリケーション全体が初期化されます。この後、入力を求めるアクティビティを開始します。

Espresso では、アプリケーションが起動し、次のコードでテストが開始されます。 onView(withId(R.id.chooseBookTitle)).perform(click());

ディスプレイにはまだスプラッシュ スクリーンが表示され、chooseBookTitle は後でしか表示されないため、これはクラッシュします。キーが存在する前に Google-Espresso がキーをクリックするのを防ぐにはどうすればよいですか?

(待機ループを挿入したくありませんが、イベント駆動型のままにしておきます。最悪の場合、Robotium に戻ります)

4

2 に答える 2

1

IdlingResource インターフェースを確認してください。

Stefano Dacchille が述べたように (以下のサンプルを参照)、アイドル状態になるまで待機するアイドル リソース実装を作成する必要があります。

public class WaitForSomethingResource implements IdlingResource {

ResourceCallback mResourceCallback;

private boolean isIdle;

@Override
public String getName() {
    return WaitForSomethingResource.class.getName();
}

@Override
public void registerIdleTransitionCallback(
        ResourceCallback resourceCallback) {
    mResourceCallback = resourceCallback;
}

@Override
public boolean isIdleNow() {
    return isIdle;
}

/**
 * Register an listener, use an event bus or something 
 * else to get notified about any change you want to track.
 */
public void onProgressChanged() {
    isIdle = true;

    if (isIdle && mResourceCallback != null) {
        mResourceCallback.onTransitionToIdle();
    }
}

}

その後、次のように記述して、テストの setUp() または @before メソッド内に IdlingResource 実装を登録する必要があります。

Espresso.registerIdlingResource(waitForSomethingResource)

サンプル: http://dev.jimdo.com/2014/05/09/wait-for-it-a-deep-dive-into-espresso-s-idling-resources/

API ドキュメント: http://developer.android.com/reference/android/support/test/espresso/IdlingResource.html#isIdleNow()

于 2015-06-23T07:11:45.273 に答える