Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockito Argument Matchers 사용의 한계는 무엇입니까?


Mockito Argument Matchers 사용의 한계는 무엇입니까?


Mockito Argument Matchers는 모의를 설정할 때 인수를 유연하게 지정하기 위해 단위 테스트에 사용되는 강력한 도구입니다. 그러나 몇 가지 제한 사항이 있습니다.

1. 사용 컨텍스트 : 인수 매칭자는 스터 빙 또는 검증 방법 내에서만 사용할 수 있습니다. 테스트중인 객체에서 메소드를 호출 할 때 사용할 수 없습니다. 예를 들어, 실제 객체에서 메소드를 호출 할 때`anystring ()`를 사용할 수 없습니다. 대신, 콘크리트 값을 사용해야합니다 [1] [5].

2. 인수를 통한 일관성 : 하나의 인수에 인수 매칭자를 사용할 때 다른 모든 인수도 매칭을 사용해야합니다. 동일한 메소드 호출에서 다른 인수에 대한 구체적인 값과 매치자를 혼합 할 수 없습니다. 이것은 'invaliduseofMatchersException'의 일반적인 출처입니다 [7] [8].

3. 조롱 제한 : Mockito는`equals ()`,`hashcode ()`또는 최종 메소드와 같은 특정 방법을 조롱 할 수 없습니다. 인수 매칭자는 조롱 할 수있는 메소드와 함께 사용할 수 있지만 이러한 제한된 방법을 조롱하는 기능을 확장하지는 않습니다 [3].

4. Argument Matcher Type : Mockito는 다양한 내장 인수 매칭을 제공합니다 (예 :`onyint ()`,`anystring ()`,`isnull ()`)을 제공하지만 인수에 대한 올바른 유형을 선택해야합니다. 예를 들어, 원시 유형과 함께`aly ()`를 사용하는 것은 예상대로 작동하지 않을 수 있습니다. 대신 부울 매개 변수 [7]에`anyboolean ()`와 같은보다 구체적인 일치자를 사용하십시오.

5. 사용자 정의 인수 매칭 자 : Mockito를 사용하면`argtat ()`메소드를 사용하여 사용자 정의 매칭자를 만들 수 있지만`argumentmatcher '인터페이스를 구현하려면 다른 시나리오에서 예상대로 동작을 보장하기 위해 신중한 고려가 필요합니다 [2] [4].

6. 다른 라이브러리와의 통합 : Hamcrest와 같은 다른 라이브러리와 Mockito를 사용할 때 통합이 올바르게 처리되어 있는지 확인하십시오. 예를 들어, Sonarqube는 hamcrest 매칭자가 유효하더라도`arg that ()`의 특정 사용을 표시 할 수 있습니다 [4].

요약하면, Mockito Argument Matchers는 다재다능하지만, 사용법은 특정 컨텍스트로 제한되며 메소드 인수에 대한 일관성이 필요합니다. 또한 특정 방법이나 클래스와 관련하여 Mockito의 기본 제한을 극복하지 못합니다.

인용 :
[1] https://groups.google.com/g/mockito/c/ul9ymczqnky
[2] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[3] https://ioflood.com/blog/mockito/
[4] https://community.sonarsource.com/t/problem-with-java-rule-s6073-mockito-argument-matchers-in-case-of-mockitohamcrest-adapter/38429
[5] https://groups.google.com/g/mockito/c/zi6pcqudtco
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.argumentmatchers.isnull
[7] https://stackoverflow.com/questions/16458136/mockito-invalid-of-argument-matchers
[8] https://www.baeldung.com/mockito-argument-matchers