首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mockito for int primitive

Mockito for int primitive
EN

Stack Overflow用户
提问于 2014-02-24 14:48:15
回答 2查看 35.5K关注 0票数 36

如果我使用包装器类类型变量作为参数,Mockito测试用例将会通过,但是,如何为int原语类型变量编写Mockito测试用例,这是ServiceImpl中方法的参数。

EN

回答 2

Stack Overflow用户

发布于 2014-02-25 03:18:08

对于whenverify的原始类型参数,在使用anyargThat时可能会遇到一些问题。这些以对象为中心的方法正确地处理了副作用,但它们倾向于返回null作为一个虚拟返回值,这对于通过自动装箱解开原语不起作用。

幸运的是,org.mockito.ArgumentMatchers类有完整的以原语为中心的方法(我在这里列出了其中的int方法):

代码语言:javascript
复制
static int anyInt()
static int eq(int value)
static int intThat(org.hamcrest.ArgumentMatcher<java.lang.Integer> matcher)

documentation for the ArgumentMatchers class上可以看到他们所有的作品。

票数 58
EN

Stack Overflow用户

发布于 2018-11-16 12:45:17

我知道这个问题已经有4年零8个月的历史了,但是为了在今天的中有一个清晰的解决方案,我把这个贴在这里

在我的例子中,要测试的方法签名是

代码语言:javascript
复制
public SomeObject create(String code, int status)

因此,在调用该方法时用于验证参数值的测试代码如下

代码语言:javascript
复制
verify(this.service).create(
        argThat(code -> "dummy_code".equals(code)),
        intThat(status -> status == 105));

如果我使用int (或任何基本类型)的argThat,那么mockito会抛出NPE

目前我使用的是org.mockito:mockito-core:jar:2.15.0,考虑到问题被提出来的时间,它肯定已经提前了!但考虑到这可能会对人们有所帮助。谢谢,

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21980728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档