Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Чим метод скидання Mockito відрізняється від ClearInVocations


Чим метод скидання Mockito відрізняється від ClearInVocations


Mockito надає два методи, які можна використовувати для управління станом макетів під час тестування: `Reset ()` та `ClearInVocations ()`. Незважаючи на те, що обидва методи використовуються для управління макетним станом, вони служать різним цілям і мають чіткий вплив на макетів.

Метод `` reset () `` метод ``

Метод `reset ()` в Mockito використовується для повного скидання макетного об'єкта. Це означає, що він не тільки очищає кількість викликів, але й видаляє будь -яку заглушку, яка була встановлена ​​на макет. Це може бути проблематично, оскільки він вимагає від вас повторного застосу після того, як його скидання, якщо ви хочете підтримувати конкретну поведінку для своїх тестів. Використання `Reset ()`, як правило, відлякується, оскільки це може призвести до складних і менш цілеспрямованих тестів. Пораджено уникати використання `reset ()`, якщо це абсолютно не потрібно, оскільки це може затьмарити наміри ваших тестів і зробити їх важче підтримувати [1] [5] [7].

метод Mockito `ClearInVocations ()` метод

Метод `ClearInVocations ()`, введений у Mockito 2.1, дозволяє очистити кількість викликів макетів, не скинувши його заглушку. Це означає, що ви можете продовжувати використовувати однакові заглушки, гарантуючи, що кожен тест починається з чистого шиферу щодо виклику методів. Цей метод корисний, коли вам потрібно перевірити взаємодію в державному сценарії або при використанні рамок введення залежності, але його все одно слід використовувати Зазвичай рекомендується уникати використання `clearInVocations ()`, якщо це не потрібно, оскільки це також може ускладнити тести, якщо їх не вдумливо [1] [4] [9].

Ключові відмінності

- Stulbing: `reset ()` видаляє всю загибку, вимагаючи відновити макет, тоді як `clearInvocations ()` листя заглушло неушкодженим.
- Кількість викликів: Обидва методи очищають кількість викликів, але `reset ()` робить це як частина повного скидання, тоді як `clearInvocations ()` спеціально спрямовані на кількість викликів.
- Складність тесту: Обидва методи можуть призвести до більш складних тестів, якщо їх ретельно не використовується, але `` reset () `має тенденцію спричиняти більше проблем через необхідність повторної засоби макетів.

Підводячи підсумок, хоча обидва методи можуть використовуватися для управління макетним станом, `` reset () `є більш інвазивним і, як правило, відлякує, тоді як` clearInvocations () `є більш цілеспрямованим, але все -таки слід використовувати розумно для підтримки чистих і цілеспрямованих тестів.

Цитати:
[1] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-aprative-use-of-mockitos-reset-method
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-a-mock-after-setup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-ite-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-of-times
[8] https://javadoc.io/doc/org.mockito/mockitocore/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear-invocations
[10] https://github.com/mockk/mockk/discussions/842