关于java:ExpectedException.expectMessage((String)null)不起作用

ExpectedException.expectMessage((String) null) is not working

我正在编写JUnit4单元测试,并且有一个条件,在这个条件下,我需要断言null消息引发了异常。

1
2
3
4
5
6
7
8
9
@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测试失败,消息为:

1
2
3
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消息异常的方法。(我知道我可以捕捉到异常并自己检查条件)。


org.hamcrest.Matcherorg.hamcrest.core.IsNull一起使用对我来说很有用。

语法是,

1
2
3
4
5
6
7
8
9
10
@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);
}