3

当我将 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

1 回答 1

4

我想你可能会发现这个页面很有用。引用它:

但请注意,如果您将规则与某些@RunWith类结合使用,您可能会得到误报。具体来说,如果您要使用上述示例中扩展的类运行JUnit4ClassRunner,则测试将不再失败。你会得到一个误报。

例如,如果您使用之前的 JMock 版本2.6.0并使用@RunWith(JMock.class)您会遇到这种情况。旧版本的JMock.class扩展JUnit4ClassRunnerJUnit4ClassRunner忽略规则。较新的BlockJUnit4ClassRunner支持规则和 JMock 后 2.6.0 扩展它在JMock.class.

简而言之,听起来您可能正在使用 2.6.0 之前的 JMock 版本,并且更新可能会解决您的问题。

于 2012-08-03T17:08:12.770 回答