我使用Robotium在Android上执行自动化测试。 问题是,当执行一堆测试时,如果任何测试导致应用程序崩溃 - 将不会执行进一步的测试。仅显示此消息"测试无法运行至完成。原因:'仪表运行因“进程崩溃”而失败。''。检查设备logcat以获取详细信息"。
我尝试在runTest()上使用try \ catch但是在应用崩溃时没有抛出任何异常。
public void runTest() throws Throwable {
try {
super.runTest();
} catch (Throwable t) {
String testCaseName = String.format("%s.%s", getClass().getName(), getName());
solo.takeScreenshot(testCaseName);
Logging.w(Logging.TAG.Test, String.format("Captured screenshot for failed test: %s", testCaseName));
t.printStackTrace();
String out = "";
for (StackTraceElement s : t.getStackTrace()) {
out = out + s.toString() + "\n";
}
fail(t.getMessage() + "\n" + out);
}
}
但仍有"测试未能完成......"消息和所有测试执行停止。
当前测试失败,问题是下次测试没有执行。有人解决了这个问题吗?有没有办法从测试中处理应用程序异常?
答案 0 :(得分:0)
问题在于
System.exit(0)
代码内部。当主应用程序以这种方式退出时,它的进程被杀死,并且机器人测试被杀死(它们生活在相同的进程中)。 对我来说,解决方案是从主应用程序的代码中删除System.exit(0)。