Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvad er de almindelige undtagelser, når du bruger PowerMock med Mockito 2.x


Hvad er de almindelige undtagelser, når du bruger PowerMock med Mockito 2.x


Når du bruger PowerMock med Mockito 2.x, kan flere almindelige undtagelser og problemer opstå på grund af kompatibilitetsproblemer og ændringer i Mockito API. Her er nogle af de mest almindelige undtagelser, og hvordan man adresserer dem:

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

Denne undtagelse opstår, når du bruger den forkerte PowerMock API -udvidelse. Udvidelsen `PowerMock-Api-Mockito` fungerer ikke med Mockito 2.x, hvilket fører til denne fejl. For at løse det skal du bruge `PowerMock-Api-Mockito2`-udvidelsen i stedet [1] [2].

2. uforenelige versioner af Mockito og Powermock **

Brug af inkompatible versioner af Mockito og Powermock kan føre til forskellige undtagelser. F.eks. Har PowerMock 1.6.5 eksperimentel støtte til Mockito 2.x, men det er ikke pålideligt. Sørg for, at du bruger kompatible versioner, såsom PowerMock 1.7.0 RC2 med Mockito 2.1.0 [1] [2].

3. IllegalAccessError med Mockito 2.7.1 **

Når du bruger PowerMock 1.6.5 eller 1.7.0 RC2 med Mockito 2.7.1, kan du muligvis støde på en "IllegalAccessError". Dette problem løses ved at bruge PowerMock 1.7.0 RC4 [1] [4].

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

I Mockito 2.x med PowerMock indpakkes originale undtagelser som `RuntimeExceptionProxy '. Dette kræver ændring af testnotationer fra `@test (forventet = SomeException.class)` til `@test (forventet = undtagelse.class)` for at fange de indpakkede undtagelser [1].

5. FieldnotFoundException med Powermocks Whitebox **

Mockito 2.x fjernet Whitebox, så brug af PowerMocks Whitebox kan føre til `FieldNotFoundException '. Hvis dette sker, kan du overveje at skrive din egen implementering eller refactorere din kode for bedre testbarhed [1] [2].

6. UafslutningstubbingException **

Denne undtagelse kan forekomme, selv når stubbing synes korrekt. Sørg for, at der ikke er nogen inline hånlige kreationer inden for stubbingmetoder, og at al stubbing er korrekt afsluttet med metoder som `ThenReturn ()` eller `Thenthrow ()` [3].

7. Kompatibilitetsproblemer med nyere Mockito -versioner **

Powermock er muligvis ikke kompatibel med nyere Mockito -versioner, såsom Mockito 4.0.0. I sådanne tilfælde kan det være nødvendigt at bruge en ældre version af Mockito, der er kompatibel med PowerMock [10].

Generelt involverer migrering til Mockito 2.x fra Mockito 1.x med PowerMock at tackle disse kompatibilitetsproblemer og potentielt refactoring -tests for at undgå at bruge PowerMock helt [1] [4].

Citater:
)
)
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migration-session-record-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-afhængighed-sue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109