gpt4 book ai didi

android - Robotium 中整个测试超时

转载 作者:行者123 更新时间:2023-11-29 00:37:34 28 4
gpt4 key购买 nike

我的应用程序测试类很少。如果它持续超过 4 秒,我想测试失败。我的代码破坏了测试,但在某些情况下它不执行下一个测试类。

我写的时候(跟timeout无关,只是fail()的一个例子):

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

Failure Trace 为空,它中断了测试并开始了另一个测试。但是当我想让它像超时一样:

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com