首页 文章

Mockito vs JMock

提问于
浏览
5

我正在尝试将我的一些单元测试从使用JMock转换为使用Mockito并且遇到了一些绊脚石 .

首先,在我使用JMock的测试中,存根的验证和返回按如下步骤进行

contextMockery.checking(new Expectations() {{
        oneOf(dateUtilityService).isBeforeToday(URGENT_DATE);
            will(returnValue(true));
    }});

这基本上验证了该方法是否被调用并同时返回一个固定值 . 如果未调用isBeforeToday方法并且同时返回我的固定值true,则测试失败 . 然而,当使用Mockito时,我必须验证该方法是否被调用,然后在单独的步骤中返回我的预设值,这些步骤几乎是重复的,如下所示:

doReturn(true).when(dateUtilityService).isBeforeToday(URGENT_DATE);
    verify(dateUtilityService).isBeforeToday(URGENT_DATE);

有没有办法一步到位?

其次,如果我忘记按照我的期望列出对我的一个模拟的方法调用,JMock在“意外的调用异常”中未通过测试,我认为这是正确的,而Mockito将很乐意通过测试,除非我明确验证方法调用对于模拟必须永远不会发生,这是正确的(似乎错了)?有没有办法告诉mockito如果对我的模拟依赖项进行了意外的方法调用而导致测试失败?

1 回答

相关问题