测试执行后冻结Android Junit测试



每个测试执行后,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许可)

,或者如果您不想使用其他测试框架(尽管我建议您看看它),只需窃取用于拍摄屏幕截图的代码

最新更新