2017-04-01 57 views
0

我在使用Espresso进行测试时闲置资源时出现问题。IdlingResources不起作用Espresso Android

它不起作用。它只被调用两次,即使返回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; 
    } 

} 

因此,在这种情况下,我回到false所有的时间,但它也不管用。

出了什么问题?

+0

你似乎被变异什么状态通常是只读的getter方法isIdleNow。我建议你在明确的递增/递减调用中管理空闲状态,就像Google的这个例子:https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/contrib/src/主/ JAVA /安卓/支持/测试/咖啡/的contrib/CountingIdlingResource.java –

回答

1

您在下面的代码和平错过return true;

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