首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JUnit 5:如何断言抛出异常?

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

Stack Overflow用户
提问于 2016-10-27 01:19:17
回答 7查看 333.6K关注 0票数 339

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

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-10-27 01:19:17

您可以使用assertThrows(),它允许您在同一个测试中测试多个异常。由于Java8对lambda的支持,这是在JUnit中测试异常的标准方法。

根据JUnit docs

代码语言:javascript
运行
复制
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"));
}
票数 562
EN

Stack Overflow用户

发布于 2017-04-03 00:27:32

他们在JUnit 5中对其进行了更改(期望的: InvalidArgumentException,实际的:调用的方法),代码如下:

代码语言:javascript
运行
复制
@Test
public void wrongInput() {
    Throwable exception = assertThrows(InvalidArgumentException.class,
            ()->{objectName.yourMethod("WRONG");} );
}
票数 32
EN

Stack Overflow用户

发布于 2017-05-16 16:28:05

您可以使用assertThrows()。我的例子取自文档的http://junit.org/junit5/docs/current/user-guide/

代码语言:javascript
运行
复制
import org.junit.jupiter.api.Test;

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

....

@Test
void exceptionTesting() {
    Throwable exception = assertThrows(IllegalArgumentException.class, () -> {
        throw new IllegalArgumentException("a message");
    });
    assertEquals("a message", exception.getMessage());
}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40268446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档