ExpectedException.expectMessage((String)null)无效

时间:2016-02-04 10:49:14

标签: java junit junit4

我正在编写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消息的异常。 (我知道我可以抓住异常并亲自检查条件。)

1 个答案:

答案 0 :(得分:2)

使用org.hamcrest.Matcherorg.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);
}