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 注释断言我的异常消息?
基础教程推荐
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01