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