Mockito의`Reset ()`메소드는 재사용 할 수 있도록 모의 객체를 재설정 할 수있는 기능입니다. 그러나 그 사용은 일반적으로 Mockito 개발자와 사용자가 낙담합니다. 지나치게 복잡하고 깨끗하게 테스트하기 어려운 테스트 나 코드가 잘못 설계된 테스트 나 코드를 나타낼 수 있기 때문입니다 [7] [9]. 대신, 권장되는 접근법은 각 테스트 방법에 대한 새로운 모의를 만들어 테스트의 독립성과 명확성을 보장하는 것입니다 [7] [9].
다른 조롱 라이브러리와 비교
1. JMOCK2 : Mockito와 달리 JMOCK2는 컨텍스트를 사용하여 기대치 및 모의 정보를 관리하며 각 테스트 방법에 대해 재건됩니다. 이것은 JMOCK2가 Mockito와 같은 명백한 재설정이 필요하지 않음을 의미합니다 [10]. JMOCK2의 접근 방식은 모의 수동 재설정없이 테스트 격리를 유지하는 데 도움이됩니다.
2. EasyMock : EasyMock도 일반적으로 재설정 방법이 필요하지 않습니다. Mockito의 권장 연습과 유사한 각 테스트마다 새로운 모의 개체를 만들도록 설계되었습니다. Mockito 개발자 인 Szczepan Faber는 EasyMock을 사용하는 동안 재설정 기능이 필요하지 않다고 언급했습니다 [8].
3. Mockito vs. 기타 라이브러리 : 일반적으로 Jmock2 및 EasyMock과 같은 다른 조롱 라이브러리는 모의 상태를 자동으로 관리하거나 각 테스트마다 새로운 모의 생성을 장려함으로써 더 깨끗한 테스트 방식을 홍보합니다. Mockito의`Reset ()`메소드는 조롱 프레임 워크의 표준보다는 예외입니다.
모범 사례
-`reset ()`: 컨테이너로 모의를 주입하고 각 테스트에 대해 재현 할 수없는 것과 같이 절대적으로 필요한 경우`rest ()`를 사용하지 않는 것이 좋습니다. 대신, 각 시나리오에 대한 새로운 모의로 간단하고 집중된 테스트를 만드는 데 집중하십시오 [7] [9].
-`requinvocations ()`: 스터브를 재설정하지 않고 상호 작용을 지우려면`requinvocations ()`를 사용하십시오. 이 방법을 사용하면 기록 된 상호 작용을 지우면서 스터 빙을 보존 할 수 있으며, 이는 특정 시나리오에서 유용 할 수 있습니다 [5].
- 테스트 가능성을위한 리팩터 코드 :`reset ()``자주 사용해야한다면, 코드가 Refactoring의 혜택을 더 잘 테스트 할 수 있음을 나타낼 수 있습니다. 여기에는 복잡한 방법을 분해하거나 의존성 주입을 개선하는 것이 포함될 수 있습니다 [9].
요약하면, Mockito는`restet ()`메소드를 제공하지만, 각 테스트마다 새로운 모의를 만드는 데 유리하게 사용하지 않습니다. 다른 조롱 라이브러리는 종종 유사한 관행을 촉진하여 복잡한 모의 관리에 대한 깨끗하고 독립적 인 테스트를 강조합니다.
인용 :[1] https://www.tutorialspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/preptriple-of-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareengineering.stackexchange.com/questions/188299/is-ne-anprident-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-up-mocks-in-spring-tests-when-using-mockito