当前位置: 首页 > 知识库问答 >
问题:

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

百里君博
2023-03-14

在JUnit5中有更好的方法来断言方法抛出异常吗?

目前,我必须使用@规则来验证我的测试是否抛出了异常,但这对于我期望多个方法在我的测试中抛出异常的情况不起作用。

共有1个答案

蒲昀
2023-03-14

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

根据JUnit文档:

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"));
}
 类似资料:
  • 版本: 我得到以下错误:

  • 我在junit测试中使用mockito。如何使异常发生,然后断言它有(泛型伪代码)

  • 我有一个类,它有一个方法。我正在做相应的测试,但是我还不能验证是否抛出了定制的异常,我使用的是JUnit5。 我已经复习了这里,但答案并没有帮助我,这是我根据一个示例编写的代码:

  • 在使用JUnit5的Kotlin中,我们可以使用assertFailsWith 在JUnit5的Java中,可以使用assertThrows 但是,我们如何用将声明和Kotlin中的执行分开呢?

  • 问题内容: 如何惯用JUnit4来测试某些代码引发异常? 虽然我当然可以做这样的事情: 我记得在这种情况下,有一个批注或一个Assert.xyz或一些不太灵活的JUnit东西。 问题答案: JUnit 4 有对此的支持:

  • 在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写