测试执行后冻结android junit测试

时间:2012-12-26 03:20:58

标签: android junit android-testing

每次测试执行后,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。请不要向我推荐额外的测试框架,我想用嵌入工具解决我的问题。谢谢。

2 个答案:

答案 0 :(得分:-1)

我建议放弃这种繁琐的单元测试方法并使用Robolectric,因此你的测试在JVM中运行,你不必处理所有这些讨厌的设置。您会对View测试的运行速度以及您不需要运行模拟器感到惊喜!

答案 1 :(得分:-1)

尝试使用Robotium进行需要真正运行android的测试。

solo = new Solo(getInstrumentation(), getActivity());
[...]
if (failure) {
    solo.takeScreenshot();
} 

这会将截图保存到您的SD卡(需要WRITE_EXTERNAL_STORAGE权限)

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