java – JUnit 5:如何断言异常抛出?

有没有更好的方法断言方法在JUnit 5中抛出异常?

目前,我必须使用@Rule来验证我的测试是否会引发异常,但这对于我希望多个方法在我的测试中抛出异常的情况不起作用.

解决方法:

您可以使用assertThrows(),它允许您在同一测试中测试多个异常.在Java 8中支持lambdas,这是在JUnit中测试异常的规范方法.

按照JUnit docs

import static org.junit.jupiter.api.Assertions.assertThrows;

@Test
void exceptionTesting() {
    MyException thrown =
        assertThrows(MyException.class,
           () -> myObject.doThing(),
           "Expected doThing() to throw, but it didn't");

    assertTrue(thrown.getMessage().contains("Stuff"));
}
上一篇:如何在相同的Gradle构建中运行JUnit5和JUnit4?


下一篇:如何在Junit 5中替换@Rule注释?