Podczas korzystania z PowerMock z Mockito 2.x może pojawić się kilka typowych wyjątków i problemów z powodu problemów kompatybilności i zmian w interfejsie API Mockito. Oto niektóre z najczęstszych wyjątków i sposób ich rozwiązania:
1. NOCLASSDEFFOUNDERROR: ORG.Mockito.cGlib.proxy.methodInterceptor **
Ten wyjątek występuje podczas korzystania z niewłaściwego rozszerzenia API PowerMock. Rozszerzenie „PowerMock-Mockito` nie działa z Mockito 2.x, co prowadzi do tego błędu. Aby to naprawić, zamiast tego należy użyć rozszerzenia „PowerMock-API-Mockito2` [1] [2].2. Niekompatybilne wersje Mockito i Powermock **
Korzystanie z niekompatybilnych wersji Mockito i Powermock może prowadzić do różnych wyjątków. Na przykład PowerMock 1.6.5 ma eksperymentalne wsparcie dla Mockito 2.x, ale nie jest wiarygodne. Upewnij się, że używasz kompatybilnych wersji, takich jak PowerMock 1.7.0 RC2 z Mockito 2.1.0 [1] [2].3. NielegalAccesserror z Mockito 2.7.1 **
Podczas korzystania z PowerMock 1.6.5 lub 1.7.0 RC2 z Mockoto 2.7.1 możesz napotkać „ALLALACTACSSERRORROR”. Ten problem jest rozwiązywany za pomocą PowerMock 1.7.0 RC4 [1] [4].4. RuntimeExceptionProxy w Mockoto 2.x z PowerMock **
W Mockito 2.x z PowerMock oryginalne wyjątki są owinięte jako „RuntimeExceptionProxy”. Wymaga to modyfikowania adnotacji testowych z @test (oczekiwano = SomeException.class) `do @test (oczekiwany = wyjątek.5. FieldNotFoundException z Whitebox PowerMock's Whitebox
Mockito 2.x Usunięte Whitebox, więc użycie Whiteboxa PowerMock może prowadzić do „fieldNotFoundException”. Jeśli tak się stanie, rozważ napisanie własnej implementacji lub refaktorowanie kodu w celu lepszej testowania [1] [2].6. NiedokończoneStubbingException **
Ten wyjątek może wystąpić, nawet gdy uderzenie wydaje się poprawne. Upewnij się, że w ramach metod kruszowania nie ma wbudowanych wykryć i że wszystkie odcinki są odpowiednio wypełnione metodami takimi jak `` enturn () `lub` thenthrow () `[3].7. Problemy związane z kompatybilnością z nowszymi wersjami Mockito **
Powermock może nie być kompatybilny z nowszymi wersjami Mocchito, takimi jak Mockito 4.0.0. W takich przypadkach konieczne może być użycie starszej wersji Mockito kompatybilnej z Powermock [10].Ogólnie rzecz biorąc, migracja do Mockito 2.x z Mockito 1.x z PowerMock obejmuje rozwiązanie tych problemów z kompatybilnością i potencjalnie refaktoryzacji, aby uniknąć korzystania z PowerMock [1] [4].
Cytaty:[1] https://proandroiddev.com/mockito-2-x-x-ver-powermock-ligration-tips-and-tricks-ten-118C52Abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-ligration-top-10-tips-and-tricks
[3] https://stackoverflow.com/questions/33441494/mocks-powermockito-weird-tubbing-exception
[4] https://proandroiddev.com/mockito-2-x-ligration-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-onunexpeced-exception-and-org-mockito-exceptions-m
[8] https://stackoverflow.com/questions/61208743/powermock-with-gocchito-dependences-issue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109