如果我使用 Wrapper 类类型变量作为参数,Mockito 测试用例正在通过,但是,如何为 int 基元类型变量编写 Mockito 测试用例,该变量是 ServiceImpl 中方法的参数。
any
或argThat
基元类型参数以when
和verify
时遇到一些麻烦。这些以对象为中心的方法可以正确地处理副作用,但它们倾向于为虚拟返回值返回null
,这对于通过自动装箱解包原语的 Java 不起作用。
幸运的是,org.mockito.ArgumentMatchers
类有一整套以基元为中心的方法(我在这里列出了int
方法):
static int anyInt()
static int eq(int value)
static int intThat(org.hamcrest.ArgumentMatcher<java.lang.Integer> matcher)
在 ArgumentMatchers 类的文档中看到所有这些。
这个问题已经超过 4 年零 8 个月了,但为了今天明确的解决方案,我发布了这个
就我而言,要测试的方法签名是
public SomeObject create(String code, int status)
因此,在调用该方法时用于验证参数值的测试代码将如下所示
verify(this.service).create(
argThat(code -> "dummy_code".equals(code)),
intThat(status -> status == 105));
如果我使用 arg即使对于 int(或任何基元类型),也会抛出 NPE
目前我正在使用org.mockito:mockito-core:jar:2.15.0,考虑到提出问题的时间,它一定是先进的!但是想到这可能对人们有所帮助...谢谢