Espresso 测试输出超时
Espresso test outputs in timeout
我正在进行常规测试,例如:
runTestOnUiThread(new Runnable() {
@Override
public void run() {
some_button.performClick();
onView(withId(R.id.some_other_button)).check(matches(isDisplayed()));
}
});
}
但考验永远不会结束。
现在,如果我采用 onView
方法并将其放在 runTestOnUiThread
语句之后,那么结果是相同的。有人有想法吗?
你的所作所为不正常。您在被测应用程序的 UI 线程上调用 onView()
,这就是测试永远不会结束的原因。这是一个普通的老僵局。
为使测试结束,请勿调用runTestOnUiThread
中的Espresso方法。在 UI 测试中,您也不应通过调用 performClick()
方法来单击 Buttons
。为此使用 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);
}
我正在进行常规测试,例如:
runTestOnUiThread(new Runnable() {
@Override
public void run() {
some_button.performClick();
onView(withId(R.id.some_other_button)).check(matches(isDisplayed()));
}
});
}
但考验永远不会结束。
现在,如果我采用 onView
方法并将其放在 runTestOnUiThread
语句之后,那么结果是相同的。有人有想法吗?
你的所作所为不正常。您在被测应用程序的 UI 线程上调用 onView()
,这就是测试永远不会结束的原因。这是一个普通的老僵局。
为使测试结束,请勿调用runTestOnUiThread
中的Espresso方法。在 UI 测试中,您也不应通过调用 performClick()
方法来单击 Buttons
。为此使用 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);
}