我可以测试特定的异常是否不抛出?
使用@Test[expect=MyException]
可以轻松实现另一种方式。
但我怎么能否定这个?
答案 0 :(得分:17)
如果您想测试在可能引发其他异常的情况下是否 抛出特定异常,请尝试以下操作:
try {
myMethod();
}
catch (ExceptionNotToThrow entt){
fail("WHOOPS! Threw ExceptionNotToThrow" + entt.toString);
}
catch (Throwable t){
//do nothing since other exceptions are OK
}
assertTrue(somethingElse);
//done!
答案 1 :(得分:3)
catch-exception使Freiheit的例子更加简洁:
catchException(a).myMethod();
assertFalse(caughtException() instanceof ExceptionNotToThrow);
答案 2 :(得分:1)
您可以使用assertj
执行以下操作如果你想检查是否没有抛出异常那么
Throwable throwable = catchThrowable(() -> sut.method());
assertThat(throwable).isNull();
或者你希望抛出
Throwable throwable = catchThrowable(() -> sut.method());
assertThat(throwable).isInstanceOf(ClassOfExecption.class)
.hasMessageContaining("expected message");