这是我的场景:
在我的许多测试中,我可能会抛出一个PassedException
(我创建的异常表示测试通过,但要停止执行)。
最初,我所有的测试都有一个expectedExceptions = PassedException.class
,并在最后抛出一个PassedException
。我不喜欢这个解决方案。
我对其进行了更改,以便在我TestListener
的方法onTestFailure(ITestResult result)
中检查可抛出的类型是PassedException.class
,如果是,则调用result.setStatus(ITestResult.SUCCESS)
。
这行得通...测试被标记为通过,但是,如果另一个测试依赖于抛出 a 的方法PassedException.class
,那么它将跳过它。
你们有谁知道为什么会这样,以及如何解决它(或解决方法)?
编辑:这是一个可复制的案例:
public class PassedException extends RuntimeException{}
public class Tester {
@Test
public static void test1(){
throw new PassedException();
}
@Test(dependsOnMethods = "test1")
public static void test2(){
}
}
public class TestListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result){
Throwable t = result.getThrowable();
if (t.getClass().equals(PassedException.class)){
result.setStatus(ITestResult.SUCCESS);
}
}
}