当我将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);
}
}
答案 0 :(得分:4)
我认为您可能会发现this page有用。引用它:
请注意,如果将规则与某些
@RunWith
类合并,则可能会出现误报。具体来说,如果您在上面的示例中使用扩展JUnit4ClassRunner
的类运行,则测试将不再失败。你会得到误报。例如,如果您在
2.6.0
之前使用JMock版本并使用@RunWith(JMock.class)
,则会遇到此问题。较早版本的JMock.class
扩展JUnit4ClassRunner
和JUnit4ClassRunner
会忽略规则。较新的BlockJUnit4ClassRunner
支持规则,JMock post 2.6.0将其扩展为JMock.class
。
简而言之,听起来您可能正在使用2.6.0之前的JMock版本,更新可能会解决您的问题。