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消息异常的方法。(我知道我可以捕捉到异常并自己检查条件)。
- expectMessage(Matcher matcher)应该用isNull匹配器来完成。
- 使用Matcher工作…谢谢。。。
- 你能展示一下有效的语法吗?
- @Jimflood,作为答案补充道。
- @编码器THX.我发现这也很有效:exception.expectmessage(nullvalue(string.class));--来自org.hamcrest.core.isnull.nullvalue。
用org.hamcrest.Matcher和org.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);
} |