2012-08-03 71 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

相关问题