【问题标题】:JMock causes JUnit ExpectedException to pass even if an exception is not thrown即使没有抛出异常,JMock 也会导致 JUnit ExpectedException 通过
【发布时间】:2012-08-03 16:25:00
【问题描述】:

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

    }

}

【问题讨论】:

    标签: java junit jmock


    【解决方案1】:

    我想您可能会发现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 版本,更新可能会解决您的问题。

    【讨论】:

    • 是的,我使用的是 jMock 2.5.0。非常感谢您的帮助。
    猜你喜欢
    • 2020-06-08
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多