Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hva er de vanlige unntakene når du bruker PowerMock med Mockito 2.x


Hva er de vanlige unntakene når du bruker PowerMock med Mockito 2.x


Når du bruker PowerMock med Mockito 2.x, kan flere vanlige unntak og problemer oppstå på grunn av kompatibilitetsproblemer og endringer i Mockito API. Her er noen av de vanligste unntakene og hvordan du kan adressere dem:

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

Dette unntaket oppstår når du bruker feil PowerMock API -utvidelse. Powermock-Api-Mockito`-utvidelsen fungerer ikke med Mockito 2.x, noe som fører til denne feilen. For å fikse det, bør du bruke `Powermock-Api-Mockito2`-forlengelsen i stedet [1] [2].

2. Inkompatible versjoner av Mockito og Powermock **

Å bruke inkompatible versjoner av Mockito og PowerMock kan føre til forskjellige unntak. For eksempel har PowerMock 1.6.5 eksperimentell støtte for Mockito 2.x, men det er ikke pålitelig. Forsikre deg om at du bruker kompatible versjoner, for eksempel PowerMock 1.7.0 RC2 med Mockito 2.1.0 [1] [2].

3. UlovalAccessError med Mockito 2.7.1 **

Når du bruker Powermock 1.6.5 eller 1.7.0 RC2 med Mockito 2.7.1, kan du møte en `ulovlig omsorg. Dette problemet løses ved å bruke PowerMock 1.7.0 RC4 [1] [4].

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

I Mockito 2.x med PowerMock er originale unntak pakket inn som `runtimeExceptionProxy`. Dette krever å endre testnoteringer fra `@Test (forventet = noenException.class)` til `@Test (forventet = unntak.class)` For å fange de innpakkede unntakene [1].

5. FieldNotFoundException med Powermocks Whitebox **

Mockito 2.x fjernet Whitebox, så bruk av Powermocks Whitebox kan føre til `FieldnotfoundException`. Hvis dette skjer, kan du vurdere å skrive din egen implementering eller refactoring koden din for bedre testbarhet [1] [2].

6. UnfinishedstubbingException **

Dette unntaket kan oppstå selv når stubbing virker riktig. Forsikre deg om at det ikke er noen inline hånlige kreasjoner innen stubbemetoder, og at all stubbing er riktig fullført med metoder som `ThenReturn ()` eller` thenthrow () `[3].

7. Kompatibilitetsproblemer med nyere Mockito -versjoner **

PowerMock er kanskje ikke kompatibel med nyere Mockito -versjoner, for eksempel Mockito 4.0.0. I slike tilfeller kan det være nødvendig å bruke en eldre versjon av Mockito som er kompatibel med PowerMock [10].

Totalt sett innebærer å migrere til Mockito 2.x fra Mockito 1.x med PowerMock innebærer å adressere disse kompatibilitetsproblemene og potensielt refactoring -tester for å unngå å bruke Powermock helt [1] [4].

Sitasjoner:
[1] https://proandroiddev.com/mockito-2-x-over-powermock-migration-tips-and-trick-top-gen-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-tips-and-tricks
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weir-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-powermock-due-to-u-unge-exception-and-org-mockito-exceptions-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