Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vilka är de vanliga undantagen när du använder PowerMock med Mockito 2.x


Vilka är de vanliga undantagen när du använder PowerMock med Mockito 2.x


När du använder PowerMock med Mockito 2.x kan flera vanliga undantag och problem uppstå på grund av kompatibilitetsproblem och förändringar i Mockito API. Här är några av de vanligaste undantagen och hur man tar upp dem:

1. NoclassDeffoundError: org.mockito.cglib.proxy.metodinterceptor **

Detta undantag inträffar när du använder fel PowerMock API -förlängning. Förlängningen `PowerMock-Api-Mockito 'fungerar inte med Mockito 2.x, vilket leder till detta fel. För att fixa det bör du använda förlängningen "PowerMock-Api-Mockito2" istället [1] [2].

2. Inkompatibla versioner av Mockito och PowerMock **

Att använda inkompatibla versioner av Mockito och PowerMock kan leda till olika undantag. Till exempel har PowerMock 1.6.5 experimentellt stöd för Mockito 2.x, men det är inte tillförlitligt. Se till att du använder kompatibla versioner, till exempel PowerMock 1.7.0 RC2 med Mockito 2.1.0 [1] [2].

3. IllegalAccessError med Mockito 2.7.1 **

När du använder PowerMock 1.6.5 eller 1.7.0 RC2 med Mockito 2.7.1 kan du möta en "olagligAccessError". Detta problem löses med hjälp av PowerMock 1.7.0 RC4 [1] [4].

4. RuntimeExceptionProxy i Mockito 2.x med PowerMock **

I Mockito 2.x med PowerMock är ursprungliga undantag lindade som `cuntimeExceptionProxy`. Detta kräver modifiering av testanteckningar från `@test (förväntat = någonsexception.class)` till `@test (förväntat = undantag.class)` för att fånga de inslagna undantagen [1].

5. FieldNotFoundException med PowerMocks whitebox **

Mockito 2.x borttagen whitebox, så att använda PowerMocks whitebox kan leda till "FieldNotFoundException". Om detta inträffar kan du överväga att skriva din egen implementering eller refactoring din kod för bättre testbarhet [1] [2].

6. UnfinishedStubbingException **

Detta undantag kan inträffa även när stubbning verkar korrekt. Se till att det inte finns några inline -håliga skapelser inom stubbmetoder och att all stubbning är korrekt genomförd med metoder som `thenreturn ()` eller `thenthrow ()` [3].

7. Kompatibilitetsproblem med nyare Mockito -versioner **

PowerMock kanske inte är kompatibel med nyare Mockito -versioner, till exempel Mockito 4.0.0. I sådana fall kan det vara nödvändigt att använda en äldre version av Mockito som är kompatibel med PowerMock [10].

Sammantaget involverar migrering till Mockito 2.x från Mockito 1.x med PowerMock att hantera dessa kompatibilitetsproblem och potentiellt refactoring -tester för att undvika att använda PowerMock helt [1] [4].

Citeringar:
]
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-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
]
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-beroende-sem
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109