我能够测试特定的异常是否不会被抛出吗?
使用@Test[expect=MyException]
很容易实现相反的功能。
但是我该如何否定这个测试呢?
我能够测试特定的异常是否不会被抛出吗?
使用@Test[expect=MyException]
很容易实现相反的功能。
但是我该如何否定这个测试呢?
如果您想测试在可能抛出其他异常的情况下,特定异常是否未被抛出,请尝试以下方法:
try {
myMethod();
}
catch (ExceptionNotToThrow entt){
fail("WHOOPS! Threw ExceptionNotToThrow" + entt.toString);
}
catch (Throwable t){
//do nothing since other exceptions are OK
}
assertTrue(somethingElse);
//done!
Throwable throwable = catchThrowable(() -> sut.method());
assertThat(throwable).isNull();
或者您期望抛出异常
Throwable throwable = catchThrowable(() -> sut.method());
assertThat(throwable).isInstanceOf(ClassOfExecption.class)
.hasMessageContaining("expected message");
catch-exception 使 Freiheit 的示例更加简洁:
catchException(a).myMethod();
assertFalse(caughtException() instanceof ExceptionNotToThrow);
另一个最新的解决方案是使用 JUnit5 assertDoesNotThrow:
assertDoesNotThrow( () -> myMethod() , "MyException is not thrown")
在编程中使用 @Test(expected = Test.None::class)
(Kotlin语言)