2017-04-01 4 views
0

Espressoを使用してテストしている間、リソースのアイドリングに問題があります。IdlingResourcesが動作しませんエスプレッソAndroid

動作しません。たとえ返信がfalseであっても、それは2回だけ呼び出されます。

public class MyIdlingResource implements IdlingResource { 

    private boolean mIdle; 
    private ResourceCallback mResourceCallback; 

    public MyIdlingResource() { 
     this.mIdle = false; 
     this.mResourceCallback = null; 
    } 

    @Override 
    public final String getName() { 
     return MyIdlingResource .class.getSimpleName(); 
    } 

    @Override 
    public final boolean isIdleNow() { 
     ArrayList<View> views = doStuff(); 
     mIdle = views != null && !views.isEmpty(); 

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

     return false; 
    } 

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

} 

だからこのケースでは、私はfalseのすべての時間を返しますが、それはどちらか動作しません。

どうしたのですか?

+0

をあなたは一般的にisIdleNow方法読み取り専用のゲッターであるものの中で状態を変異しているようです。 Googleの次のような明示的な増分/減額コールでアイドリング状態を管理することをおすすめします。https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/contrib/src/ main/java/android/support/test/espresso/contrib/CountingIdlingResource.java –

答えて

1

あなたは、コードの平和以下でreturn true;を逃した:

if (mIdle) { 
    if (mResourceCallback != null) { 
     mResourceCallback.onTransitionToIdle(); 
     return true; // this one is missed 
    } 
} 
関連する問題