我正在进行常规测试,例如:
runTestOnUiThread(new Runnable() {
@Override
public void run() {
some_button.performClick();
onView(withId(R.id.some_other_button)).check(matches(isDisplayed()));
}
});
}
但测试永远不会结束。
现在,如果我采用onView
方法并且如果我将它放在runTestOnUiThread
语句之后,那么结果是相同的。有人有想法吗?
答案 0 :(得分:2)
你正在做什么并不常见。您正在测试的应用程序的UI线程上调用onView()
,这就是测试永远不会结束的原因。这是一个普通的僵局。
要使测试结束,请不要在runTestOnUiThread
中调用Espresso方法。在UI测试中,您不应通过调用Buttons
方法点击performClick()
。使用Espresso:
public void test_click(){
// Click on the `some_button`
onView(withId(R.id.some_other)).perform(click());
// Or click on view with the text 'OK`
onView(withText("OK")).perform(click());
// Check that a view with R.id.some_other_button is displayed
onView(withId(R.id.some_other_button)).check(matches(isDisplayed()));
}
当Espresso必须等待太长时间才能使应用程序空闲时,会抛出AppNotIdleException
。在您的情况下,应用程序正在使用AsyncTasks
在后台执行某些操作。你有一些任务在运行吗?
为了缩短Espresso失败的时间,您可以减少超时:
@BeforeClass
public static void beforeClass() {
IdlingPolicies.setMasterPolicyTimeout(10, TimeUnit.SECONDS);
IdlingPolicies.setIdlingResourceTimeout(10, TimeUnit.SECONDS);
}