Bij het gebruik van PowerMock met Mockito 2.x kunnen verschillende gemeenschappelijke uitzonderingen en problemen ontstaan door compatibiliteitsproblemen en veranderingen in de Mockito API. Hier zijn enkele van de meest voorkomende uitzonderingen en hoe ze kunnen worden aangepakt:
5
Deze uitzondering treedt op bij het gebruik van de verkeerde PowerMock API -extensie. De extensie `PowerMock-API-Mockito` werkt niet met Mockito 2.x, wat leidt tot deze fout. Om het op te lossen, moet u in plaats daarvan de `PowerMock-API-Mockito2'-extensie gebruiken [1] [2].
2. Incompatibele versies van Mockito en PowerMock **
Het gebruik van onverenigbare versies van Mockito en PowerMock kan leiden tot verschillende uitzonderingen. PowerMock 1.6.5 heeft bijvoorbeeld experimentele ondersteuning voor Mockito 2.x, maar het is niet betrouwbaar. Zorg ervoor dat u compatibele versies gebruikt, zoals PowerMock 1.7.0 RC2 met Mockito 2.1.0 [1] [2].3. IllegalAccesserror met Mockito 2.7.1 **
Wanneer u PowerMock 1.6.5 of 1.7.0 RC2 met Mockito 2.7.1 gebruikt, kunt u een `illegalaccesserror` tegenkomen. Dit probleem wordt opgelost door PowerMock 1.7.0 RC4 [1] [4] te gebruiken.4. RuntimeExceptionProxy in Mockito 2.x met PowerMock **
In Mockito 2.x met PowerMock zijn originele uitzonderingen ingepakt als `RuntimeExceptionProxy`. Dit vereist het wijzigen van test -annotaties van `@test (verwacht = someException.Class)` naar `@test (verwacht = uitzondering.class)` om de ingepakte uitzonderingen te vangen [1].5. FieldNotFoundException met PowerMock's whitebox **
Mockito 2.x verwijderde whitebox, dus het gebruik van PowerMock's whitebox kan leiden tot `FieldNotFoundException '. Als dit gebeurt, overweeg dan om uw eigen implementatie te schrijven of uw code te refacteren voor een betere testbaarheid [1] [2].6. UnfinishedStubbingException **
Deze uitzondering kan optreden, zelfs wanneer stompt correct lijkt. Zorg ervoor dat er geen inline nep -creaties zijn binnen stompmethoden en dat alle stompt correct wordt voltooid met methoden zoals `thenreturn ()` of `thenhrow ()` [3].7. Compatibiliteitsproblemen met nieuwere Mockito -versies **
PowerMock is mogelijk niet compatibel met nieuwere Mockito -versies, zoals Mockito 4.0.0. In dergelijke gevallen kan het gebruik van een oudere versie van Mockito die compatibel is met PowerMock nodig is [10].Over het algemeen omvat het migreren naar Mockito 2.x van Mockito 1.x met PowerMock het aanpakken van deze compatibiliteitsproblemen en mogelijk refacteren van tests om te voorkomen dat PowerMock helemaal wordt gebruikt [1] [4].
Citaten:[1] https://proandroiddev.com/mockito-2-x-over-powermock-migration-dip-and-tricks-top-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-tips-en-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-power--due-to-unexpected-exception-and-org-mockito-exceptions-m-
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-dependenties-issue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109