Junit使用eq()参数匹配器vs直接传递字符串

时间:2019-06-12 09:44:32

标签: junit mockito

如果直接传递字符串会做同样的事情,eq()参数匹配器的用途是什么。

例如

的行为

when(method.foo(“ test”))。thenReturn(“ bar”);

相似

when(method.foo(ArgumentMatcher.eq(“ test”)))。thenReturn(“ bar”);

1 个答案:

答案 0 :(得分:1)

ArgumentMatchers比eq()多。另一个受欢迎的是any(),但还有更多的ArgumentMatchers。它们通常一起使用,以帮助确定测试用例的正确值。您可能不想检查所有测试中的所有参数。例如,如果您的代码中包含更多参数。

when(method.foo(eq("test"), any(Test.class), isNull()).thenReturn("bar");

我同意eq()似乎是多余的,但是诀窍在于,如果一个参数必须全部使用一个匹配器,那么如果您要使用一个any(),则不能再将未包装的{{1 }}参数。