有什么区别:
verify(mock, times(1)).myMethod(Matchers.isA(String.class));
verify(mock, times(1)).myMethod(Matchers.anyString());
答案 0 :(得分:20)
isA
检查该类是否与期望的类匹配。在Mockito 1.x中,any
,anyObject
和anyString
会完全忽略该参数,包括其类型,即使any
可以采用类参数和anyString
在名称中指定它。
通常,除非您有理由防止传入不兼容的参数,否则您可能会坚持使用any
和anyString
。 Mockito风格更喜欢灵活的测试用例,这意味着只验证您明确检查的内容,并故意允许其他所有内容都未指定。
更新:Mockito提交者Brice已提供some historical background and future direction:
对于历史参考,
中修复any
是anything
的简写别名,当时API强制一个人施放,贡献者和/或提交者考虑将该类作为参数传递以避免此演员表,不改变此API的语义。然而,这种变化最终改变了人们认为这个API正在做的事情。 这将在mockito 2 +