2016-02-04 68 views
1

我正在編寫JUnit4單元測試,並有一個條件,我需要斷言與null消息引發異常。ExpectedException.expectMessage((String)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 

反正是有測試與一個null消息的異常JUnit4的方式。 (我知道我可以捕捉到異常情況並自己檢查條件)。

+7

'expectMessage(匹配器匹配)'應該用'isNull'匹配做到這一點。 –

+0

使用Matcher工作...謝謝... – Codebender

+0

你能顯示有效的語法嗎? –

回答

1

使用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); 
}