android - Robotium 中整个测试超时

标签 android robotium

我有几个类(class)来测试我的应用程序。如果持续时间超过 4 秒,我希望测试失败。我的代码破坏了测试,但在某些情况下它不会执行下一个测试类。

当我写的时候(与超时无关,只是fail()的一个例子):

public void testSmth() {
    fail("msg");
}

失败跟踪是空的,它破坏了测试并开始另一个测试。但是当我想让它像超时一样:

public void testSmth() {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            fail("msg");
        }
    }, 4000);

    // some tests (that even lasts more than 4 secons) like clickOnImage() etc.
}

它破坏了测试,但它不执行下一个测试,并且在失败跟踪中有:

Test failed to run to completion. Reason: 'Instrumentation run failed due to ''junit.framework.AssertionFailedError''. Check device logcat for details

在 LogCat 中我得到:

07-26 11:46:07.428: E/AndroidRuntime(6195): FATAL EXCEPTION: Timer-1

07-26 11:46:07.428: E/AndroidRuntime(6195): junit.framework.AssertionFailedError: msg

07-26 11:46:07.428: E/AndroidRuntime(6195): at junit.framework.Assert.fail(Assert.java:47)

07-26 11:46:07.428: E/AndroidRuntime(6195): at java.util.Timer$TimerImpl.run(Timer.java:284)

或者也许还有其他方法可以做我想做的事?

谢谢。

最佳答案

如果您只是想在超时时使测试失败,这应该足够了:

public void test1() throws Exception {
    long start = System.currentTimeMillis();
    solo.sleep(5000);
    if (System.currentTimeMillis() - start > 4000) {
        fail("msg");
    }
}

public void test2() throws Exception {
    long start = System.currentTimeMillis();
    solo.sleep(3000);
    if (System.currentTimeMillis() - start > 4000) {
        fail("msg");
    }
}

在执行过程中很难破坏测试,您也可以在每个命令后检查超时,但是检查需要时间,并且您的测试方法将持续更长时间。

关于android - Robotium 中整个测试超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665354/

相关文章:

离开 Activity 时 Android Map Activity 崩溃 [致命信号 11 (SIGSEGV)]

android - 如果我在 Android 中使用 Games.API,如何获取服务器的访问 token ?

android - 何时使用 executePendingBindings() 何时不需要?

android - java.lang.NoClassDefFoundError : android/test/ActivityInstrumentationTestCase2 错误

android - Robotium - 我们如何找到 Activity 中元素的确切索引

java - Activity 运行时是否有事件要触发?

Android,Logcat 窗口消失了

android - 如何从单元/robotium 测试中获取对 fragment 的引用?

android - Robotium:如何重新签署 .apk 应用程序以便使用 Robotium 对其进行测试?

android - 如何使用 ActivityInstrumentationTestCase2 捕获异常?