Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mockito 2.x와 함께 PowerMock을 사용할 때 일반적인 예외는 무엇입니까?


Mockito 2.x와 함께 PowerMock을 사용할 때 일반적인 예외는 무엇입니까?


Mockito 2.X와 함께 PowerMock을 사용할 때는 Mockito API의 호환성 문제와 변화로 인해 몇 가지 일반적인 예외와 문제가 발생할 수 있습니다. 다음은 가장 일반적인 예외와이를 해결하는 방법입니다.

1. noclassDeffoundError : org.mockito.cglib.proxy.methodinterceptor **

이 예외는 잘못된 PowerMock API Extension을 사용할 때 발생합니다. 'PowerMock-Api-Mockito'확장자는 Mockito 2.X에서 작동하지 않으므로이 오류로 이어집니다. 이를 해결하려면 'PowerMock-Api-Mockito2'확장자를 대신 사용해야합니다 [1] [2].

2. Mockito 및 PowerMock의 호환되지 않는 버전 **

호환되지 않는 버전의 mockito 및 powermock을 사용하면 다양한 예외가 생길 수 있습니다. 예를 들어, PowerMock 1.6.5는 Mockito 2.X에 대한 실험적 지원을 제공하지만 신뢰할 수 없습니다. Mockito 2.1.0 [1] [2]와 함께 PowerMock 1.7.0 RC2와 같은 호환 버전을 사용하십시오.

3. mockito와 함께 불법 행위자 2.7.1 **

Mockito 2.7.1과 함께 PowerMock 1.6.5 또는 1.7.0 rc2를 사용하는 경우 '불법 행위자'가 발생할 수 있습니다. 이 문제는 PowerMock 1.7.0 RC4 [1] [4]를 사용하여 해결됩니다.

4. PowerMock과 함께 Mockito 2.X의 runtimeexceptionproxy **

PowerMock과 함께 Mockito 2.X에서 원래 예외는`runtimeexceptionProxy`로 랩핑됩니다. `@test (예상 = somexception.class)`to` @test (예상 = Exception.class)에서 테스트 주석을 수정해야합니다 [1].

5. PowerMock의 Whitebox와 함께 FieldNotFoundException **

Mockito 2.X는 화이트 박스를 제거하므로 PowerMock의 화이트 박스를 사용하면`FieldNotFoundException`가 이어질 수 있습니다. 이 경우 자신의 구현을 작성하거나 더 나은 테스트 가능성을 위해 코드를 리팩토링하는 것을 고려하십시오 [1] [2].

6. UnfinishedStubbingException **

이 예외는 스터 빙이 올바른 것처럼 보일 수 있습니다. 스터 빙 방법 내에 인라인 모의 크리에이션이 없으며`theReturn ()`또는`thenthrow ()`[3]과 같은 메소드로 모든 스터 빙이 올바르게 완료되어 있는지 확인하십시오.

7. 최신 Mockito 버전의 호환성 문제 **

PowerMock은 Mockito 4.0.0과 같은 새로운 Mockito 버전과 호환되지 않을 수 있습니다. 그러한 경우, PowerMock과 호환되는 이전 버전의 mockito를 사용하는 것이 필요할 수 있습니다 [10].

전반적으로, PowerMock을 사용하여 Mockito 1.X에서 Mockito 2.X로 마이그레이션하는 것은 이러한 호환성 문제를 해결하고 PowerMock 사용을 피하기 위해 잠재적으로 리팩토링하는 테스트를 포함합니다 [1] [4].

인용 :
[1] https://proandroiddev.com/mockito-2-x-over-powermock-migration-tips-and-tricks-top-ten-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-tips-and-tricks
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migration-session-recording-droidcon-uk-2018-ba70619f3811
[5] https://github.com/powermock/powermock/issues/706
[6] https://github.com/mockito/mockito/issues/1606
[7] https://stackoverflow.com/questions/69394651/cannot-run-powermock-due-to-unexpected-nexception-norg-mockito-exceptions-m
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-dependencies-issue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109