我有一个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测试也可以毫无故障地运行。
实际结果:每次测试均失败,因此其余测试不会继续进行。
如果没有办法在代码中忽略它,我至少希望有一种方法可以在每次测试开始之前运行它,抛出失败结果,然后继续。本质上,此方法会更改应用程序的状态。
答案 0 :(得分:0)
您是否考虑过使用Test Orchestrator?在其文档中指出:
崩溃是孤立的。即使一个测试崩溃,它也只会删除其自己的Instrumentation实例,因此套件中的其他测试仍然可以运行。
我想您所看到的崩溃是在被测试的应用程序中发生的,也就是说,崩溃会在发生崩溃时关闭使用它的工具。即使发生这种情况,使用Test Orchestrator也可以让后续测试运行。