如果我使用Wrapper类类型变量作为参数Mockito测试用例正在通过但是, 如何为int原语类型变量编写Mockito测试用例,这是ServiceImpl中方法的参数。
答案 0 :(得分:42)
对于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)
答案 1 :(得分:2)
我知道这个问题已经存在了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 ,则模仿会抛出NPE
当前,我正在使用 org.mockito:mockito-core:jar:2.15.0 ,考虑到提出问题的时间,该功能必须已经进行了改进!但是认为这可能对人们有所帮助...谢谢,