2016-04-07 17 views
1

我想验证在片段中绘制的按钮的存在。该按钮的可见性和存在取决于使用Retrofit进行的网络调用/响应。等待在Espresso测试中依赖于网络呼叫的按钮

由于异步性,我认为我应该去IdlingResource。我的问题是,我真的不知道什么是trueisIdleNow()的好方法。我是否应该试图通过findElementById(R ..)来获得元素的持有或者是否存在其他一些典型的“Espresso方式”来执行这些等待断言?

编辑:

目前的解决方案是简单地不IdlingResource:

while (timeout-- > 0) { 
    try { 
     onView(withId(element)).check(matches(isDisplayed())); 
    } catch (AssertionError ae) { 
     MiscUtil.sleep(1000); 
     continue; 
    } 
    return true; 
} 

但我想这是不是根据基本面咖啡。由于某种原因,执行来自IdlingResource实施的检查匹配调用会暂停所有线程。

回答

1

如果您使用的改造,我会想你正在使用OKHttp如果没有,那么答案将是类似

(你只需要编写一个怠速资源为您的网络运营。)

如果使用OKHttp有一个很好的在这里框空闲资源: https://github.com/JakeWharton/okhttp-idling-resource

在测试的设置只是注入你okhttp客户端(如果你使用匕首),注册资源(不要忘记在推倒注销)。

而你的按钮的可见性和显示将自动神奇地等待。

附注: 当涉及动画您的意见,他们是你的仪器测试中最大的敌人,请务必关闭动画(特别是如果你以自定义的方式完成它们,你需要找到一种方法来禁用它们在测试运行期间)。