Mockito桩机是否有一个“not”参数匹配器?

3

我想验证一个方法是否被调用,传入了一个除特定值以外的任意long类型的参数。

因此,我想知道是否有适用于我的用例的ArgumentMatcher,例如:

verify(mObject).verifiedMethod(notEq(longValueThatShouldBeAvoided));

我找到了这个解决方法:
verify(mObject).method(longThat(arg -> arg != longValueThatShouldBeAvoided));

但我觉得奇怪的是,这样简单的 ArgumentMatcher 必须从头开始编写。


附加问题: 如何在检查多个值时避免重复代码?

类似地,我发现使用 arg -> arg != val0 && arg != val1 lambda 表达式作为 ArgumentsMatcher.longThat 方法的参数可以实现此功能。

2个回答

2

尝试:

import static org.mockito.AdditionalMatchers.not; 
import static org.mockito.ArgumentMatchers.eq;

verify(mObject).verifiedMethod(not(eq(longValueThatShouldBeAvoided)));

请问你能具体说明一下你建议使用哪个 not 方法吗?我的意思是,它在哪个包中声明的? - EnzoMolion
1
import static org.mockito.AdditionalMatchers.not; import static org.mockito.ArgumentMatchers.eq;@EnzoMolion - Misha Lemko
1
可以了,谢谢!我以为我试过这个了,但我的IDE实际上导入了org.hamcrest.Matchernot... - EnzoMolion

1

虽然这个问题实际上完美地回答了我的问题,而且其他几个问题也是如此,但我在研究期间没有找到它们,对此感到抱歉。 - EnzoMolion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接