我正在编写JUnit4单元测试,并且有一个条件,我需要断言用null
消息抛出异常。
@Rule
public final ExpectedException exception = ExpectedException.none();
@Test
public final void testNullException() throws Exception {
exception.expect(Exception.class);
exception.expectMessage((String) null);
mPackage.getInfo(null);
}
行mPackage.getInfo(null)
正在抛出一个带有null
消息的异常,但是JUnit测试失败并显示消息:
java.lang.AssertionError:
Expected: (an instance of java.lang.Exception and exception with message a string containing null)
but: exception with message a string containing null message was null
无论如何用 JUnit4方式来测试null
消息的异常。 (我知道我可以抓住异常并亲自检查条件。)
答案 0 :(得分:2)
使用org.hamcrest.Matcher
和org.hamcrest.core.IsNull
为我工作。
语法是,
@Rule
public final ExpectedException exception = ExpectedException.none();
@Test
public final void testNullException() throws Exception {
exception.expect(Exception.class);
Matcher<String> nullMatcher = new IsNull<>();
exception.expectMessage(nullMatcher);
mPackage.getInfo(null);
}