在Mockito中,`verifyZerointeractions`是一种专门的验证方法,用于确保在测试过程中在模拟对象上没有进行方法调用。该方法对于通过防止可能表明逻辑或不必要依赖性缺陷的意外相互作用来保持单位测试的纯度至关重要。
###与其他验证方法的差异
1。目的和行为:
- “验证”:此方法检查是否在模拟对象上没有进行任何方法调用。如果检测到任何方法调用,Mockito会引发异常,从而导致测试失败。它用于断言在测试执行过程中,模拟对象仍未受到影响[1] [4]。
- “验证”:此方法用于验证是否按预期发生特定的方法调用。它允许您检查是否调用了特定参数的方法,并且可以使用各种验证模式(例如`times()`,','atleast()
times()`''和'atmost()`指定调用次数[2] [7]。
2。验证模式:
- “验证” Interactions`不支持验证模式。它只是检查没有任何相互作用的情况。
- “验证”支持多种验证模式,例如`times()
times','atleast()`,',a atleastonce()```and atmast()',允许您指定应称为方法的次数[2] [7]。
3。调用顺序:
- “验证互动”并不关心方法调用的顺序,因为它完全检查没有交互。
- “验证”可以与`inorder”一起验证模拟对象上的方法调用顺序。当方法调用序列很重要时,这很有用[2] [7]。
4。用例:
- “验证” Interactions`通常在要确保在测试方案中根本不使用模拟对象时使用。这有助于隔离正在测试的单位并确保由于意外相互作用而不会发生副作用[1] [4]。
- “验证”用于您需要确认对象之间发生特定交互的方案。这对于测试正在测试的系统的预期行为至关重要[2] [7]。
5。与`exifyNomoreynercractions'的关系:
- `验证了iNteractions`检查是否完全没有发生交互。
- `验证nomoreyneractions“检查模拟对象上的所有相互作用是否已验证。它可以确保使用“验证”以进行特定方法调用[3] [9]后没有未验证的交互作用。
总而言之,`verifyZeroInteractions'是一种专门的方法,重点是确保不进行交互,而`eREDIFY''的用途更广泛,可以检查特定的交互及其频率。这两种方法在使用Mockito的单位测试中都是必不可少的,具体取决于测试方案。
引用:[1] https://www.dhiwise.com/post/how-to-use-use-verifyZeroInteractions-for-better-better-better-better-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-complete-golide-guide-to-mockito-verify
[3] https://stackoverflow.com/questions/52396683/difference-between-werifynomoreinteractions-and-verifyzerointeractions-in-mockit
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.verifyzerointractions
[5] https://stackoverflow.com/questions/64239160/ using-mockito-when-to-mock-and-verify-vs-mockito-verify
[6] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[7] https://www.toptal.com/java/a-guide-to-everyday-mockito
[8] https://www.baeldung.com/mockito-verify
[9] https://www.digitalocean.com/community/tutorials/mockito-verify