Naudojant „PowerMock“ su „Mockito 2.X“, dėl suderinamumo problemų ir „Mockito“ API pokyčių gali kilti keletas įprastų išimčių ir problemų. Čia yra keletas dažniausiai pasitaikančių išimčių ir kaip jas išspręsti:
1. „NoclassDeffounderror“: org.mockito.cglib.proxy.methodinterceptor **
Ši išimtis įvyksta naudojant netinkamą „PowerMock API“ plėtinį. „PowerMock-Api-Mockito“ plėtinys neveikia su „Mockito 2.x“, todėl susidaro ši klaida. Norėdami tai ištaisyti, vietoj to turėtumėte naudoti „PowerMock-API-Mockito2“ plėtinį [1] [2].2. Nesuderinamos „Mockito“ ir „PowerMock“ versijos **
Naudojant nesuderinamas „Mockito“ ir „PowerMock“ versijas, galite sukelti įvairias išimtis. Pavyzdžiui, „PowerMock 1.6.5“ turi eksperimentinę paramą „Mockito 2.x“, tačiau tai nėra patikima. Įsitikinkite, kad naudojate suderinamas versijas, tokias kaip „PowerMock 1.7.0 RC2“ su „Mockito 2.1.0“ [1] [2].3. „LegalAccessError“ su „Mockito 2.7.1“ **
Kai naudojate „PowerMock“ 1.6.5 arba 1.7.0 RC2 su „Mockito 2.7.1“, galite susidurti su „nelegalAccessError“. Ši problema išspręsta naudojant „PowerMock 1.7.0 RC4“ [1] [4].4. „RunTimeExceptionProxy“ „Mockito 2.x“ su „PowerMock“ **
„Mockito 2.x“ su „PowerMock“ originalios išimtys yra apvyniotos kaip „runtimeexceptionproxy“. Tam reikia modifikuoti bandymo anotacijas iš `@Test (tikimasi =„ SomeException.class “)` į `@Test (tikimasi = išimtis.class)` sugauti suvyniotas išimtis [1].5. „FieldNotFoundException“ su „PowerMock“ „WhiteBox“ **
„Mockito 2.x“ pašalinta „WhiteBox“, todėl naudojant „PowerMock“ „WhiteBox“ gali sukelti „fieldNotfoundException“. Jei taip atsitiks, apsvarstykite galimybę parašyti savo įgyvendinimą arba atnaujinti savo kodą, kad būtų geresnis išbandomumas [1] [2].6.
Ši išimtis gali įvykti net tada, kai kankinimas atrodo teisingas. Įsitikinkite, kad nėra jokių pavyzdžių, susijusių su kankinančiais metodais, ir kad visi kibirai būtų tinkamai baigti tokiais metodais kaip „TheReturn ()` arba `ThenthRow ()` [3].7. Suderinamumo problemos su naujesnėmis „Mockito“ versijomis **
„PowerMock“ gali būti nesuderinamas su naujesnėmis „Mockito“ versijomis, tokiomis kaip „Mockito 4.0.0“. Tokiais atvejais gali prireikti naudoti senesnę „Mockito“ versiją, suderinamą su „PowerMock“ [10].Apskritai, migravimas į „Mockito 2.x“ iš „Mockito 1.x“ su „PowerMock“ apima šių suderinamumo problemų sprendimą ir galimai reaguojančius testus, kad būtų išvengta „PowerMock“ naudojimo [1] [4].
Citatos:[1] https://proandroiddev.com/mockito-2-x-over- over-powermock-migration-pips-and-tricks-top-ten-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over- over-cowermock-migration-top-10-ps-and-tricks
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weird-utubbing-exception
[4] https://proandroiddev.com/mockito-2-x-xigration-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-nexpected-exception-and-org-mocko-xceptions-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