Espresso测试输出超时

时间:2016-07-06 16:32:31

标签: java android testing android-espresso

我正在进行常规测试,例如:

runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                some_button.performClick();
               onView(withId(R.id.some_other_button)).check(matches(isDisplayed()));

            }
        });
}

但测试永远不会结束。 现在,如果我采用onView方法并且如果我将它放在runTestOnUiThread语句之后,那么结果是相同的。有人有想法吗?

1 个答案:

答案 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);
}