전통적인 Hamcrest 시합을 통해 Mockitohamcrest를 사용하면 특히 단위 테스트에서 조롱하기 위해 Mockito와 협력 할 때 몇 가지 장점이 있습니다. 주요 이점은 다음과 같습니다.
1. Mockito와의 통합 : Mockitohamcrest를 사용하면 Hamcrest 매칭을 Mockito의 조롱 프레임 워크와 완벽하게 통합 할 수 있습니다. 이 통합은 전통적인 Hamcrest 매칭업자만으로 직접 지원되지 않는 복잡한 인수 일치로 스텁을 설정하거나 방법 호출을 확인하는 데 중요합니다. 예를 들어, 'mockitohamcrest.arg that'을 사용하여 hamcrest 매칭자를 Mockito 매칭으로 변환하여 Mockito 컨텍스트에서 Hamcrest의 풍부한 매치 업체 세트를 사용할 수 있습니다 [1] [10] [12].
2. 버전의 비 호환성 : Mockito는 버전 2.1.0의 Hamcrest에서 분리되어 과거에 사용자에게 문제를 일으킨 버전 비 호환성을 피했습니다. Mockitohamcrest는 특정 버전의 Hamcrest와 밀접하게 결합되지 않고 Hamcrest 마팅러를 사용하여 잠재적 충돌을 줄이는 방법을 제공합니다 [1] [10].
3. 인수 일치의 유연성 : Mockitohamcrest를 사용하면 Hamcrest의 유연하고 표현적인 매칭을 사용하여 복잡한 인수 일치 시나리오를 정의 할 수 있습니다. 이것은 특정 기판이 포함 된 문자열이나 특정 범위 내에서 숫자와 같은 특정 조건과 일치하는 인수가있는 메소드가 호출되었는지 확인해야 할 때 특히 유용합니다 [4] [12].
4. 개선 된 가독성 및 자체 문서화 코드 : Mockitohamcrest를 통해 Hamcrest 매칭자를 사용하면 테스트가 자체 문서화 상태로 유지되고 읽기 쉬운 상태로 유지 될 수 있습니다. 경기자는 테스트의 의도를 명확하게 표현하여 개발자가 추가 의견이 필요하지 않고 테스트중인 내용을 더 쉽게 이해할 수 있도록합니다 [3] [9].
5. 더 나은 오류 메시지 : 어설 션이 실패하면 Hamcrest는 상세하고 의미있는 오류 메시지를 제공하여 디버깅에 크게 도움이 될 수 있습니다. 이는 Mockitohamcrest를 사용할 때 특히 유익합니다. 모의 검증이 실패한 이유를 식별하는 데 도움이되므로 문제를 쉽게 진단 할 수 있습니다 [3] [9].
6. 사용자 정의 및 확장 가능성 : Hamcrest의 매치 업체 API를 사용하면 특정 테스트 요구에 맞는 사용자 정의 매칭을 만들 수 있습니다. Mockitohamcrest와 결합되면이 확장 성을 사용하면 응용 프로그램의 논리에 정확하게 일치하는 더 많은 목표적이고 표현적인 테스트를 작성할 수 있습니다 [6] [9].
요약하면 Mockitohamcrest는 Hamcrest의 유연하고 표현력이 뛰어난 Mockito의 조롱 기능을 강력하게 조합하여 테스트 가독성, 유연성 및 유지 관리를 향상시킵니다.
인용 :[1] https://site.mockito.org/javadoc/current/org/mockito/hamcrest/mockitohamcrest.html
[2] https://stackoverflow.com/questions/20441594/mockito-and-hamcrest-how-to-verify-invocation-of-collection-argument
[3] https://automatenow.io/complete-guide-to-hamcrest-matchers/
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.hamcrest.mockitohamcrest.mockitohamcrest
[5] https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.9/org/mockito/argumentmatcher.html
[6] https://www.javacodegeeks.com/2015/11/custom-hamcrest-matchers.html
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.hamcrest.mockitohamcrest
[8] https://site.mockito.org/javadoc/current/index.html?org%2fmockito%2fargumentmatcher.html
[9] https://www.vogella.com/tutorials/hamcrest/article.html
[10] https://weblab.tudelft.nl/docs/mockito/3.10/org/mockito/hamcrest/mockitohamcrest.html
[11] https://truth.dev/comparison.html
[12] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher