How do I assert my exception message with JUnit Test annotation?(如何使用 JUnit Test 注释断言我的异常消息?)
问题描述
我已经编写了一些带有 @Test 注释的 JUnit 测试.如果我的测试方法抛出一个已检查的异常,并且如果我想将消息与异常一起断言,有没有办法使用 JUnit @Test 注释来做到这一点?AFAIK,JUnit 4.7 不提供此功能,但是否有任何未来版本提供它?我知道在.NET 中你可以断言消息和异常类.在 Java 世界中寻找类似的功能.
I have written a few JUnit tests with @Test annotation. If my test method throws a checked exception and if I want to assert the message along with the exception, is there a way to do so with JUnit @Test annotation? AFAIK, JUnit 4.7 doesn't provide this feature but does any future versions provide it? I know in .NET you can assert the message and the exception class. Looking for similar feature in the Java world.
这就是我想要的:
@Test (expected = RuntimeException.class, message = "Employee ID is null")
public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() {}
推荐答案
你可以使用 @Rule 注释与 ExpectedException,像这样:
You could use the @Rule annotation with ExpectedException, like this:
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Test
public void shouldThrowRuntimeExceptionWhenEmployeeIDisNull() throws Exception {
expectedEx.expect(RuntimeException.class);
expectedEx.expectMessage("Employee ID is null");
// do something that should throw the exception...
System.out.println("=======Starting Exception process=======");
throw new NullPointerException("Employee ID is null");
}
请注意,ExpectedException 文档中的示例(当前)是错误的 - 没有公共构造函数,因此您必须使用 ExpectedException.none().
Note that the example in the ExpectedException docs is (currently) wrong - there's no public constructor, so you have to use ExpectedException.none().
这篇关于如何使用 JUnit Test 注释断言我的异常消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使用 JUnit Test 注释断言我的异常消息?
基础教程推荐
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
