2017-04-01 2 views
0

J'ai le problème avec les ressources de ralenti lors des tests en utilisant Espresso.IdlingResources ne fonctionne pas Espresso Android

Cela ne fonctionne pas. Il est appelé seulement deux fois et c'est tout, même si retourner false.

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; 
    } 

} 

Donc dans ce cas je reviens false tout le temps, mais il ne fonctionne pas non plus.

Qu'est-ce qui ne va pas?

+0

Vous semblez être dans l'état muter ce qui est généralement la méthode de lecture seule getter isIdleNow. Je vous recommande de gérer l'état de ralenti dans un appel d'incrément/décrément explicite, comme cet exemple de Google: https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/contrib/src/ main/java/android/support/test/espresso/contrib/CountingIdlingResource.java –

Répondre

1

Vous avez manqué return true; en dessous de la paix de code:

if (mIdle) { 
    if (mResourceCallback != null) { 
     mResourceCallback.onTransitionToIdle(); 
     return true; // this one is missed 
    } 
}