使用Robotium处理应用程序崩溃

时间:2016-05-10 14:25:56

标签: android robotium

我使用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);
        }
    }

但仍有"测试未能完成......"消息和所有测试执行停止。

当前测试失败,问题是下次测试没有执行。有人解决了这个问题吗?有没有办法从测试中处理应用程序异常?

1 个答案:

答案 0 :(得分:0)

问题在于

System.exit(0)

代码内部。当主应用程序以这种方式退出时,它的进程被杀死,并且机器人测试被杀死(它们生活在相同的进程中)。 对我来说,解决方案是从主应用程序的代码中删除System.exit(0)。