如果我使用包装器类类型变量作为参数,Mockito测试用例将会通过,但是,如何为int原语类型变量编写Mockito测试用例,这是ServiceImpl中方法的参数。
发布于 2014-02-25 03:18:08
对于when和verify的原始类型参数,在使用any或argThat时可能会遇到一些问题。这些以对象为中心的方法正确地处理了副作用,但它们倾向于返回null作为一个虚拟返回值,这对于通过自动装箱解开原语不起作用。
幸运的是,org.mockito.ArgumentMatchers类有完整的以原语为中心的方法(我在这里列出了其中的int方法):
static int anyInt()
static int eq(int value)
static int intThat(org.hamcrest.ArgumentMatcher<java.lang.Integer> matcher)在documentation for the ArgumentMatchers class上可以看到他们所有的作品。
发布于 2018-11-16 12:45:17
我知道这个问题已经有4年零8个月的历史了,但是为了在今天的中有一个清晰的解决方案,我把这个贴在这里
在我的例子中,要测试的方法签名是
public SomeObject create(String code, int status)因此,在调用该方法时用于验证参数值的测试代码如下
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,考虑到问题被提出来的时间,它肯定已经提前了!但考虑到这可能会对人们有所帮助。谢谢,
https://stackoverflow.com/questions/21980728
复制相似问题