在JUnit测试期间如何忽略“流程崩溃”

时间:2019-01-19 17:46:51

标签: java android junit android-espresso

我有一个JUnit测试,其方法我知道该测试将失败

Test running failed: Instrumentation run failed due to 'Process 
crashed.'

这是“崩溃”并重新启动应用程序的过程的一部分。我无法触摸发生此崩溃的代码,所以我必须接受它。

我想运行此@Test,当它不可避免地崩溃时,无论如何都要通过测试,然后继续进行下一个测试。

我已经尝试用

包围代码
try {} catch() {}

我尝试使用(expected = Exception),并抛出异常

我已经尝试过了

@Test(expected = Exception.class)
public void test() throws Exception {
    rogueMethod();
}

预期结果:

即使进程崩溃,JUnit测试也可以毫无故障地运行。

实际结果:每次测试均失败,因此其余测试不会继续进行。

如果没有办法在代码中忽略它,我至少希望有一种方法可以在每次测试开始之前运行它,抛出失败结果,然后继续。本质上,此方法会更改应用程序的状态。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用Test Orchestrator?在其文档中指出:

  

崩溃是孤立的。即使一个测试崩溃,它也只会删除其自己的Instrumentation实例,因此套件中的其他测试仍然可以运行。

我想您所看到的崩溃是在被测试的应用程序中发生的,也就是说,崩溃会在发生崩溃时关闭使用它的工具。即使发生这种情况,使用Test Orchestrator也可以让后续测试运行。