У Mockito, `VerifyZeroInteraction` - це спеціалізований метод перевірки, який використовується для того, щоб під час тесту не було здійснено жодних дзвінків методів. Цей метод має вирішальне значення для підтримки чистоти одиничних тестів шляхом запобігання непередбачуваних взаємодій, які можуть вказувати на недоліки в логіці або непотрібних залежностях.
Відмінності від інших методів перевірки
1. Призначення та поведінка:
- `VerifyZeroInteraction`: Цей метод перевіряє, чи не було здійснено жодних викликів методів на знущанні. Якщо виявлено будь -який виклик методу, Mockito кидає виняток, внаслідок чого тест вийшов з ладу. Він використовується для ствердження, що макетний об'єкт залишається недоторканим під час тестового виконання [1] [4].
- `Перевірка ': Цей метод використовується для перевірки того, що конкретні виклики методу виникають, як очікувалося. Це дозволяє перевірити, чи був викликаний метод із конкретними аргументами і може бути використаний з різними режимами перевірки, такими як `times ()`, `принаймні ()`, і `найменш ()`, щоб вказати кількість викликів [2] [7].
2. Режими перевірки:
- `VerifyZeroInteraction` не підтримує режими перевірки. Він просто перевіряє відсутність будь -яких взаємодій.
- `Перевірка` Підтримує кілька режимів перевірки, таких як `times ()`, `принаймні ()`, `atleasonce ()`, і `atte ()`, що дозволяє вказати, скільки разів слід називати методом [2] [7].
3. Порядок виклику:
- `VerifyZeroInteraction` не стосується порядку дзвінків методів, оскільки він перевіряє взагалі без взаємодії.
- `Перевірка 'може бути використана з` inorder` для перевірки порядок виклику методу на макетні об'єкти. Це корисно, коли послідовність викликів методу важлива [2] [7].
4. Використовуйте випадки:
- `VerifyZeroInteraction` зазвичай використовується, коли ви хочете переконатися, що макетний об’єкт взагалі не використовується в тестовому сценарії. Це допомагає ізолювати підрозділ, що перевіряється, і гарантуючи, що не виникає побічних ефектів через несподівані взаємодії [1] [4].
- `Перевірка 'використовується в сценаріях, де потрібно підтвердити, що конкретні взаємодії відбуваються між об'єктами. Це важливо для тестування очікуваної поведінки тесту системи [2] [7].
5. Відносини з `verifyNoMoreInteraction`:
- `VerifyZeroInteraction` перевіряє, чи взагалі жодних взаємодій не відбулося.
- `VerifyNoMoreInteraction` перевіряє, чи були перевірені всі взаємодії на макетному об'єкті. Це гарантує, що після використання `Перевірте" для конкретних методів викликів методів [3] [9].
Підводячи підсумок, `VerifyZeroInteraction` - це спеціалізований метод, орієнтований на забезпечення не виникає взаємодій, тоді як` Перевірка 'є більш універсальним, що дозволяє перевірити наявність конкретних взаємодій та їх частоти. Обидва методи є важливими для тестування одиниць за допомогою Mockito, що обслуговують різні цілі залежно від сценарію тесту.
Цитати:[1] https://www.dhiwise.com/post/how-to-use-verifyzerointeraction-for-better-flutter-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-cumplete-guide-to-mockito-verify
[3] https://stackoverflow.com/questions/52396683/difference-betwear
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.verifyzerointeractions
[5] https://stackoverflow.com/questions/64239160/using-mockito-when-to-mock-and-verify-vs-mockito-verify
[6] https://www.javacodegeeks.com/2015/11/mockitoverification.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/mockitoverify