Java mockito 服务测试参数取反

标签 java unit-testing testing java-8 mockito

我尝试使用 mockito 2.7.15 测试我的服务。

首先我试试这个:

when(customerDaoMock.find(AdditionalMatchers.not(id1))).thenReturn(null);

但是我得到了一个InvalidUseOfmatchersException..所以我用谷歌搜索了这个问题并找到了这个stackoverflow question . 之后我的第二次尝试是:

when(customerDaoMock.find(AdditionalMatchers.not(Mockito.argThat‌(id1)))).thenReturn(null);

但是 Mockito 类不再有方法 argThat

所以我的问题是如何在 mockito 中使用 not 否定方法?

或者对于这个问题还有其他选择或更好的解决方案吗?

最佳答案

这是来自 AdditionalMatchers javadoc 的示例:

//anything but not "ejb"
mock.someMethod(not(eq("ejb")));

这是工作示例:

public static class Tmp {
    public String f(Long a) {
        return a.toString();
    }
}

@Test
public void mockitoTest() {
    Tmp mock = Mockito.mock(Tmp.class);
    when(mock.f(AdditionalMatchers.not(Mockito.eq(5L)))).thenReturn("42");

    Assert.assertEquals("42", mock.f(4L));
    Assert.assertNull(mock.f(5L));
}

关于Java mockito 服务测试参数取反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42997010/

相关文章:

java - WatchService API 事件,更改可编辑文件(word、odt...)

java - 使用 onCreateView 中的功能动态更改 View

javascript - 如何在 Angular 单元测试中模拟警报

php - Laravel phpunit 测试失败。转到意外的页面。只发生在测试中

java - 如何在定义后立即按顺序重用代码?

java - 如何使用 ByteBuddy 对接口(interface)默认方法进行 rebase ?

c# - 使用不同的环境设置使所有测试运行多次

c++ - 我可以在 C++ 中使用 TableDrivenTests 概念吗?

java - Mockito 在测试 hibernate 方法时总是返回 NULL

c# - 使用 StoryQ 修改或配置输出