2012-08-03 68 views
3

當我使用JMock和JUnit ExpectedException時,即使不拋出異常,測試似乎也會通過。例如,下面的測試失敗,因爲它應該。但如果我取消註釋這兩條評論線,它就會通過。難道我做錯了什麼?這兩個組件之間是否存在不兼容?JMock導致即使不拋出異常也會傳遞JUnit ExpectedException

//@RunWith(JMock.class) 
public class JUnitJMockTest { 

    @Rule 
    public ExpectedException exception = ExpectedException.none(); 

    //Mockery context = new JUnit4Mockery(); 

    @Test 
    public void test() { 

     exception.expect(NullPointerException.class); 

    } 

} 

回答

4

我覺得你可能會覺得this page有用。引用它:

請注意,雖然如果您將規則與某些@RunWith類相結合,您可能會得到誤報。具體來說,如果您要在上例中使用延伸JUnit4ClassRunner的類運行,則測試不會再失敗。你會得到一個誤報。

例如,如果您在使用2.6.0之前的JMock版本並使用@RunWith(JMock.class),則會遇到此問題。舊版本的JMock.class延伸JUnit4ClassRunnerJUnit4ClassRunner忽略規則。較新的BlockJUnit4ClassRunner支持規則和JMock後2.6.0擴展此在JMock.class

簡而言之,聽起來您可能正在使用2.6.0之前版本的JMock,並且更新可能會解決您的問題。

+0

是的,我使用的是jMock 2.5.0。非常感謝您的幫助。 – robingrindrod 2012-08-07 09:23:20

相關問題