Mockito에서는`times (n)`및`Atleast (n)`가 'verify'메소드 내에 사용됩니다. 각각에 대한 자세한 설명은 다음과 같습니다.
Times (N)
- 목적 :이 메소드는 메소드가 정확히`n '시간이라고하는지 확인합니다. 메소드가`n '보다 다소 호출되면 테스트가 실패합니다.- 예 :`확인 (mock, times (2)). somemethod ();`somemethod ()`가 정확히 두 번 호출되도록합니다.
- 사용 사례 : 정확한 수의 호출을 보장하는 데 필요한 경우 사용하십시오.
ATLEATER (N)
- 목적 :이 메소드는 메소드가 적어도`n '시간이라고 불립니다. 이 방법이`n '보다 작게 호출되면, 테스트는 실패하지만`n'보다 더 많이 호출되면 통과됩니다.- 예 :`verify (mock, Atlest (2)). somemethod ();`somemethod ()`가 적어도 두 번 호출되도록합니다.
- 사용 사례 : 최소 수의 호출 수를 보장하지만 최대 값을 신경 쓰지 않으려면 사용하십시오.
주요 차이점
- 정확한 vs. 최소 :`Times (n)`정확한 통화 수가 필요하지만`Atlest (n)`는 적어도 해당 수의 통화가 필요합니다.- 유연성 :`ATLEATER (n)`는 지정된 것보다 더 많은 통화를 허용하는 반면, Times (n)`는 통화 수에 대해 엄격합니다.
- 오류 처리 : 메소드가`times (n)`로 지정된 것보다 더 많은 시간을 호출하는 경우 Mockito는 예외를 던집니다 (``gomanyactualinvocations`). `Atlest (n)`를 사용하면 메소드가 지정된 ( 'ToolitTleActualInvocations')보다 적은 시간이라고하는 경우에만 실패합니다.
요약하면,`times (n)`는 메소드 호출 수를 정확하게 제어하는 데 사용되는 반면,`Atleast (n)`는 최대 통화 수를 제한하지 않고 통화의 최소 임계 값을 보장하는 데 사용됩니다.
인용 :[1] https://stackoverflow.com/questions/58176580/what-is-the-difference-betwen-atleastonce-and-in-mockito
[2] https://mincong.io/2019/09/22/mockito-verify/
[3] https://github.com/mockk/mockk
[4] https://site.mockito.org/javadoc/current/org/mockito/mockito.html
[5] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.atleast
[6] https://stackoverflow.com/questions/60969650/use-of-verify-method-with-nithout-times1-parameter
[7] https://www.digitalocean.com/community/tutorials/mockito-verify
[8] https://stackoverflow.com/questions/27787487/java-verify-void-method-calls-ntimes-with-mockito
[9] https://www.javacodegeeks.com/2015/11/mockito-verification.html
[10] https://stackoverflow.com/questions/54233024/how-to-verify-a-method-was-was-called-multiple-times/54233921