Mockito를 사용하여 예외를 조롱 할 때, 몇 가지 일반적인 함정으로 인해 테스트가 덜 효과적이거나 유지하기가 어려울 수 있습니다. 다음은 이러한 함정 중 일부와 피하는 방법입니다.
1. 오버 모킹 **
가장 중요한 함정 중 하나는 오버 모킹입니다. 이것은 너무 많은 종속성을 조롱 할 때 발생하여 깨지기 쉬우 며 유지하기 어려운 테스트로 이어집니다. 오버 모킹은 테스트가 테스트중인 시스템의 실제 동작보다 조롱에 더 집중할 수 있습니다. 이를 피하려면 사소한 행동이있는 공동 작업자 또는 상호 작용을 확인하려는 공동 작업자 만 조롱하는 데 집중하십시오. 간단한 협력에 실제 사례를 사용하십시오 [3].2. 잘못된 예외 **
Mockito는 예외가 특정 스터브 베드 방법에 유효하도록합니다. 메소드의 확인 된 예외 목록에없는 예외를 던지려고하면 Mockito가 불평합니다. 예를 들어, 메소드가 'ioexception'을 선언하지 않으면 'ioexception'을 던지기 위해 그것을 조롱하려고하면 오류가 발생합니다 [1]. 항상 조롱 된 예외 가이 방법에 유효한 지 확인하십시오.3.`thethrow ()
`
`언제 (). thenthrow ()`모의 반환 값이 없기 때문에 공허 메소드와 함께 사용할 수 없습니다. 대신, void 메소드에는`dothrow ()`를 사용하십시오. 이러한 방법을 잘못 혼합하면 오류가 발생할 수 있습니다 [2].
4. 특이성 부족 **
예외를 조롱 할 때 테스트중인 예외에 대해 구체적으로 사용하는 것이 중요합니다. 테스트 시나리오와 관련된 예외에 초점을 맞추면 오버 모킹을 피하십시오. 이것은 테스트에 집중하고 유지 관리 할 수 있도록 도와줍니다 [2] [8].5. 실행의 잘못된 처리 **
테스트 중에 조롱 된 경우에도 응용 프로그램 코드가 예외를 올바르게 처리 할 준비가되어 있는지 확인하십시오. 여기에는 예상대로 예상대로 작동하는지 확인하기위한 논리를 테스트하는 것이 포함됩니다 [2].6. 의미있는 오류 메시지 사용 **
예외를 조롱하는 경우 테스트가 실패한 경우 문제를 진단하는 데 도움이되는 의미있는 메시지를 포함하십시오. 이 관행은 시험의 명확성과 효과를 향상시킵니다 [2].7. 예외 처리 논리 테스트 **
코드가 예상대로 예외를 처리하는지 확인하십시오. 여기에는 예외가 발생될 때 응용 프로그램이 올바르게 동작하는지 확인하는 것이 포함되며, 이는 탄력성 응용 프로그램을 구축하는 데 중요합니다 [2].8. 조롱 재설정 및 청소 **
Mockito는 모의 관리를 위해`restet ()`및`clearinvocations ()`와 같은 기능을 제공합니다. 그러나 이것들은 드물게 사용해야합니다. 모의 재설정은 모의가 컨테이너에 의해 주입되어 각 테스트에 대해 재현 할 수없는 것과 같은 드문 경우에만 수행되어야합니다. 모의 재현이 상당한 오버 헤드로 이어지는 경우 호출을 지우는 데 유용 할 수 있습니다 [1].이러한 함정을 인식하고 모범 사례를 따르면 Mockito를 효과적으로 사용하여 예외를 조롱하고 테스트가 강력하고 유지 보수인지 확인할 수 있습니다.
인용 :[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-mockito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockito-exception-when-requires-an-argument whoh-has-to-be-a-method-call-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-mockito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-throw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-mockito