Unit testing 在每个测试中使用VerifyNoMore交互的失败是什么?

Unit testing 在每个测试中使用VerifyNoMore交互的失败是什么?,unit-testing,mockito,Unit Testing,Mockito,Mockito的VerifyNoMoreJDOC有一个警告 警告一句:一些做了很多经典的用户, expect run verify mocking倾向于使用verifyNoMoreInteractions()进行模拟 通常,甚至在每种测试方法中。verifyNoMoreInteractions()不可用 建议在每种试验方法中使用。verifyNoMoreInteractions()是 来自交互测试工具包的一个方便的断言。只使用它 相关的时候。滥用它会导致过度指定,减少 可维护测试 在任何被嘲笑的

Mockito的VerifyNoMoreJDOC有一个警告

警告一句:一些做了很多经典的用户, expect run verify mocking倾向于使用verifyNoMoreInteractions()进行模拟 通常,甚至在每种测试方法中。verifyNoMoreInteractions()不可用 建议在每种试验方法中使用。verifyNoMoreInteractions()是 来自交互测试工具包的一个方便的断言。只使用它 相关的时候。滥用它会导致过度指定,减少 可维护测试


在任何被嘲笑的测试中使用这种方法的失败是什么?您是否介意举一些例子,说明它会导致测试无法维护和过度指定?

在大多数情况下,测试“当我这样做时,应该会发生”是明确和充分的。测试“没有其他事情发生”通常是无用的,而verifyNoMoreInteractions()就是这样做的。当这种情况因为事实上,一些不相关和/或不重要的事情也发生了而中断时,开发人员倾向于开始验证这种不相关或不重要的交互,污染了最初的测试,而最初的测试的责任只是断言“当我这样做时,应该发生”。至少这是我的解释。若我在注入到具体类构造函数的每个模拟接口中使用verifyNoMoreInteractions会怎么样?例如,我将本地和远程存储库注入Android clean体系结构中的用例类?如果我在这些接口上调用verifyNoMoreInteractions,或者在类似的构造中调用verifyNoMoreInteractions,它被认为是污染的和/或不可维护的吗?世界不是黑白的。如果您真的认为将该检查添加到测试中对于该测试有意义是必要的,那么添加它。如果你没有,那么就不要添加它。