Android 使用Espresso.registerIdlingResources()
我需要用浓缩咖啡写测试。此测试必须单击按钮,等待3秒钟(应用程序将在此时在TextView中加载文本),然后检查TextView是否包含文本。我正在使用下一个代码:Android 使用Espresso.registerIdlingResources(),android,android-testing,android-espresso,Android,Android Testing,Android Espresso,我需要用浓缩咖啡写测试。此测试必须单击按钮,等待3秒钟(应用程序将在此时在TextView中加载文本),然后检查TextView是否包含文本。我正在使用下一个代码: onView(withId(R.id.button)).perform(click()); IdlingResource idlingResource = new ElapsedTimeIdlingResource(3000); Espresso.registerIdlingResources(idlingResource);
onView(withId(R.id.button)).perform(click());
IdlingResource idlingResource = new ElapsedTimeIdlingResource(3000);
Espresso.registerIdlingResources(idlingResource);
onView(withId(R.id.label)).check(matches(withText("Some text")));
Espresso.unregisterIdlingResources(idlingResource);
ElapsedTimeIdlingResource类在上可用
看起来等待算法不起作用,并在单击后立即检查启动。registerIdlingResources()是否必须在3秒内冻结线程?或者这里需要一些回调
另外,这里还有一个关于日志记录的问题
Log.d()
和System.out.println()不打印。有什么方法可以登录吗?刚刚尝试了类似的代码,效果很好。不需要任何线程睡眠。问题应该在其他地方(不在您提供的代码中)。确保您的注册数据源
,检查
,取消注册数据源
代码放在一个测试中。@MyDogTom,好的,谢谢。但是它是如何工作的呢?仅供理解。在执行查看操作之前,浓缩咖啡将等待所有注册的idlingResource
变为空闲(isIdleNow()
返回true
)。请看,我遇到了一个类似的问题,在这个问题中,我无法前进到onView(…)方法的第二次调用。在第一次调用onView(…)时,它被冻结了。在我的例子中,我在执行任何测试之前注册我的XilingResource,在执行所有测试之后注销它。当我取消注册时,一切都开始按预期进行。不过看起来还是很有趣。