每个测试执行后,junit将进入下一个测试。每个测试执行后,活动会自动关闭。
我测试功能时可以,但是当我测试视图时还不错。我想在Junit执行下一个测试之前在屏幕上查看执行结果。
所以,我想在测试之间进行小延迟。
我可以做到一种方法:
public void testMyView() throws InterruptedException {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// viewOperations...
}
});
Thread.sleep(3000);
}
但是我不喜欢这种方式,因为此代码很脏(尤其是当我有很多这样的测试时)。
另一种方法似乎更好:
@UiThreadTest
public void testHandleEmptyAlphabetList() throws InterruptedException {
// view operations
Thread.sleep(3000);
}
但是:它将阻止UI线程,但不能阻止测试线程。我需要阻止测试线程。
有什么方法可以在测试线程中分别从此代码运行Thread.sleep(3000);
?
那么,在测试之间进行线程延迟的最佳方法是什么?
P.S。请不要向我推荐其他测试框架,我想使用嵌入工具来解决我的问题。谢谢。
我建议抛弃这种麻烦的单元测试方式和使用robolectric,因此您的测试在JVM中进行,您不必处理所有这些令人讨厌的设置。您会对您的视图测试运行的速度感到惊喜,并且您无需运行模拟器!
尝试将机器人用于需要真正的Android运行的测试。
solo = new Solo(getInstrumentation(), getActivity());
[...]
if (failure) {
solo.takeScreenshot();
}
这将把屏幕截图保存到您的SD卡(需要with_external_storage许可)
,或者如果您不想使用其他测试框架(尽管我建议您看看它),只需窃取用于拍摄屏幕截图的代码