如何测试是否未抛出特定异常?

时间:2011-12-20 12:45:32

标签: junit

我可以测试特定的异常是否抛出?

使用@Test[expect=MyException]可以轻松实现另一种方式。

但我怎么能否定这个?

3 个答案:

答案 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");