每次测试执行后,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。请不要向我推荐额外的测试框架,我想用嵌入工具解决我的问题。谢谢。
答案 0 :(得分:-1)
我建议放弃这种繁琐的单元测试方法并使用Robolectric,因此你的测试在JVM中运行,你不必处理所有这些讨厌的设置。您会对View测试的运行速度以及您不需要运行模拟器感到惊喜!
答案 1 :(得分:-1)
尝试使用Robotium进行需要真正运行android的测试。
solo = new Solo(getInstrumentation(), getActivity());
[...]
if (failure) {
solo.takeScreenshot();
}
这会将截图保存到您的SD卡(需要WRITE_EXTERNAL_STORAGE权限)
或者,如果您不想使用其他测试框架(虽然我建议您查看它),只需窃取用于截取屏幕截图的代码