Pri uporabi PowerMocka z Mockito 2.x lahko nastane več pogostih izjem in težav zaradi težav z združljivostjo in sprememb v API -ju Mockito. Tu je nekaj najpogostejših izjem in kako jih obravnavati:
bo
Ta izjema se pojavi pri uporabi napačne razširitve API PowerMock. Podaljšek `PowerMock-Api-Mockito` ne deluje z Mockito 2.x, kar vodi do te napake. Če ga želite odpraviti, namesto tega uporabite `PowerMock-Api-Mockito2` podaljšek [1] [2].2. Nezdružljive različice Mockito in Powermock **
Uporaba nezdružljivih različic Mockito in PowerMock lahko privede do različnih izjem. Na primer, PowerMock 1.6.5 ima eksperimentalno podporo za Mockito 2.x, vendar ni zanesljiv. Prepričajte se, da uporabljate združljive različice, kot je PowerMock 1.7.0 RC2 z Mockito 2.1.0 [1] [2].3. IllegalAccesError z Mockito 2.7.1 **
Pri uporabi PowerMock 1.6.5 ali 1.7.0 RC2 z Mockito 2.7.1 lahko naletite na "ilegalAccessError". To vprašanje se reši z uporabo PowerMock 1.7.0 RC4 [1] [4].4. RuntimeExceptionProxy v Mockito 2.x s Powermock **
V Mockito 2.x s PowerMockom so izvirne izjeme zavite kot `RuntimeExceptionProxy`. To zahteva spreminjanje testnih pripomb iz `@Test (pričakovano = someexception.class)` do `@test (pričakovano = izjema.class)`, da ujamejo zavite izjeme [1].5. FieldNotFoundException z Whiteboxom ** Powermock's
Mockito 2.x je odstranil WhiteBox, zato lahko uporaba Whitebox Powermock privede do `FieldNotFoundException`. Če se to zgodi, razmislite o pisanju lastne implementacije ali preoblikovanju kode za boljšo preverjanje [1] [2].6. nedokončani StubBingexception **
Ta izjema se lahko pojavi tudi, če se zdi, da se trjenje zdi pravilno. Prepričajte se, da v metodah trmast ni nobenih vgrajenih kreacij in da je vse trmanje pravilno dokončano z metodami, kot sta `the thereturn ()` ali `thenthrow ()` [3].7. Težave z združljivostjo z novejšimi različicami Mockito **
PowerMock morda ni združljiv z novejšimi različicami Mockito, kot je Mockito 4.0.0. V takih primerih bo morda potrebna uporaba starejše različice Mockito, ki je združljiva s PowerMockom [10].Na splošno selitev na Mockito 2.x iz Mockito 1.x z PowerMockom vključuje reševanje teh vprašanj združljivosti in potencialno preskuse za ponovno predelavo, da se izognete uporabi PowerMocka v celoti [1] [4].
Navedbe:[1] https://proandroiddev.com/mockito-2-x-x-over-powermock-migracija-tips-and-tricks-top-ten-18c52Abd1d8
[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-xception
[4] https://proandroiddev.com/mockito-2-x-x-migration-session-recording-droidcon-uk-2018-ba70619f3811
[5] https://github.com/powermock/powermock/isissue/706
[6] https://github.com/mockito/mockito/isissue/1606
[7] https://stackoverflow.com/questions/69394651/cannot-run-powermock-du-to-unakt-exception-and-org-mockito-exceptions-m
[8] https://stackoverflow.com/questions/61208743/Powermock-with-mockito-dependicties-issue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/isissue/1109