Mockito는 테스트 중에 모의 상태를 관리하는 데 사용할 수있는 두 가지 방법을 제공합니다.`restet ()`및`clearinvocations ()`. 두 방법 모두 모의 상태를 관리하는 데 사용되지만 다른 목적을 수행하고 모의에 뚜렷한 영향을 미칩니다.
mockito의`restet ()`메소드
Mockito의`restet ()`메소드는 Mock Object를 완전히 재설정하는 데 사용됩니다. 이는 호출 카운트를 지울뿐만 아니라 모의에 설정된 스터 빙도 제거합니다. 테스트에 대한 특정 동작을 유지하려면 재설정 한 후 모의를 다시 스튜해야하기 때문에 문제가 될 수 있습니다. `reset ()`의 사용은 일반적으로 복잡하고 덜 집중된 테스트로 이어질 수 있기 때문에 낙담합니다. 테스트의 의도를 모호하게하고 유지하기가 더 어려워 질 수 있기 때문에 절대적으로 필요하지 않은 한`reset ()`를 사용하지 않는 것이 좋습니다 [1] [5] [7].
mockito의`clearInvocations ()`메소드
Mockito 2.1에 도입 된`requiinvocations ()`메소드를 사용하면 스터 빙을 재설정하지 않고 모의 호출 수를 지울 수 있습니다. 즉, 각 테스트는 메소드 호출과 관련하여 각 테스트가 깨끗한 슬레이트로 시작하도록 동일한 스터브를 계속 사용할 수 있습니다. 이 방법은 상태가 많은 시나리오에서 상호 작용을 확인하거나 종속성 주입 프레임 워크를 사용할 때 유용하지만 여전히 드물게 사용해야합니다. 필요하지 않은 경우`recleInvocations ()`를 사용하지 않는 것이 일반적으로 권장됩니다. 신중하게 사용하지 않으면 테스트를 복잡하게 할 수 있기 때문입니다 [1] [4] [9].
주요 차이점
- 스터브 :`resteet ()`retubbing을 제거하고``reclinvocations ()
`` '잎은 그대로 둡니다.
- 호출 카운트 : 두 가지 메소드 모두 명확한 호출 카운트이지만`reset ()
` '
``'
`` '
' ''는 전체 재설정의 일부로`reset ()`는 전체 재설정의 일부로,`reynvocations ()
`` '는 구체적으로 호출 계수를 대상으로합니다.
- 테스트 복잡성 : 두 가지 방법 모두 신중하게 사용하지 않으면 더 복잡한 테스트로 이어질 수 있지만`resteet ()`는 모의를 다시 스튜해야 할 필요성으로 인해 더 많은 문제를 일으키는 경향이 있습니다.
요약하면, 두 방법 모두 Mock State를 관리하는 데 사용될 수 있지만`Reset ()`는 더 침습적이고 일반적으로 낙담하지만`ClearInvocations ()`는 더 목표물이지만 깨끗하고 집중된 테스트를 유지하기 위해 신중하게 사용되어야합니다.
인용 :[1] https://softwareengineering.stackexchange.com/questions/188299/is-ne-anprident-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-ton-mock-setup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-of-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear-invocations
[10] https://github.com/mockk/mockk/discussions/842