JMock导致即使不抛出异常也会传递JUnit ExpectedException
问题描述:
当我使用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);
}
}
答
我觉得你可能会觉得this page有用。引用它:
请注意,虽然如果您将规则与某些
@RunWith
类相结合,您可能会得到误报。具体来说,如果您要在上例中使用延伸JUnit4ClassRunner
的类运行,则测试不会再失败。你会得到一个误报。例如,如果您在使用
2.6.0
之前的JMock版本并使用@RunWith(JMock.class)
,则会遇到此问题。旧版本的JMock.class
延伸JUnit4ClassRunner
和JUnit4ClassRunner
忽略规则。较新的BlockJUnit4ClassRunner
支持规则和JMock后2.6.0扩展此在JMock.class
。
简而言之,听起来您可能正在使用2.6.0之前版本的JMock,并且更新可能会解决您的问题。
是的,我使用的是jMock 2.5.0。非常感谢您的帮助。 – robingrindrod 2012-08-07 09:23:20