Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Was sind die allgemeinen Ausnahmen bei der Verwendung von PowerMock mit Mockito 2.x


Was sind die allgemeinen Ausnahmen bei der Verwendung von PowerMock mit Mockito 2.x


Bei der Verwendung von PowerMock mit Mockito 2.x können mehrere gemeinsame Ausnahmen und Probleme aufgrund von Kompatibilitätsproblemen und Änderungen der Mockito -API auftreten. Hier sind einige der häufigsten Ausnahmen und wie man sie angeht:

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

Diese Ausnahme erfolgt bei der Verwendung der falschen PowerMock -API -Erweiterung. Die Erweiterung "PowerMock-api-mockito" funktioniert nicht mit Mockito 2.x, was zu diesem Fehler führt. Um dies zu beheben, sollten Sie stattdessen die "PowerMock-api-mockito2`-Erweiterung [1] [2] verwenden.

2. Inkompatible Versionen von Mockito und PowerMock **

Die Verwendung von inkompatiblen Versionen von Mockito und PowerMock kann zu verschiedenen Ausnahmen führen. Zum Beispiel hat PowerMock 1.6.5 experimentelle Unterstützung für Mockito 2.x, ist aber nicht zuverlässig. Stellen Sie sicher, dass Sie kompatible Versionen wie PowerMock 1.7.0 RC2 mit Mockito 2.1.0 [1] [2] verwenden.

3. Illegalacceserror mit Mockito 2.7.1 **

Wenn Sie PowerMock 1.6.5 oder 1.7.0 RC2 mit Mockito 2.7.1 verwenden, können Sie auf einen illegalen Accesserror stoßen. Dieses Problem wird durch die Verwendung von PowerMock 1.7.0 RC4 [1] [4] gelöst.

4. RunTimeExceptionProxy in Mockito 2.x mit PowerMock **

In Mockito 2.x mit PowerMock werden ursprüngliche Ausnahmen als "RunTimeexceptionProxy" eingewickelt. Dies erfordert die Änderung von Testernotationen von `@test (erwartete = seltsamexception.class)` zu `@test (erwartet = exception.class)`, um die verpackten Ausnahmen zu fangen [1].

5. FieldnotFoundException mit PowerMocks Whitebox **

Mockito 2.x hat WhiteBox entfernt, sodass die Verwendung von PowerMocks Whitebox zu "FieldnotFoundException" führen kann. Wenn dies geschieht, sollten Sie Ihre eigene Implementierung schreiben oder Ihren Code für eine bessere Prüfbarkeit [1] [2] neu aufstellen.

6. Unvollendete StubbingException **

Diese Ausnahme kann auch dann auftreten, wenn Stubbing korrekt erscheint. Stellen Sie sicher, dass es keine Inline -Mock -Kreationen innerhalb von Stubbing -Methoden gibt und dass alle Stubbing mit Methoden wie "thentReturn ()" oder "Thenthrow ()` [3] ordnungsgemäß abgeschlossen sind.

7. Kompatibilitätsprobleme mit neueren Mockito -Versionen **

PowerMock ist möglicherweise nicht mit neueren Mockito -Versionen wie Mockito 4.0.0 kompatibel. In solchen Fällen könnte die Verwendung einer älteren Version von Mockito, die mit PowerMock kompatibel ist, erforderlich sein [10].

Insgesamt beinhaltet die Migration zu Mockito 2.x von Mockito 1.x mit PowerMock die Behebung dieser Kompatibilitätsprobleme und die potenzielle Wiederaufbauung von Tests, um die Verwendung von PowerMock insgesamt zu vermeiden [1] [4].

Zitate:
[1] https://proandroiddev.com/mockito-2-x-over-powermock-migration-tip-and-trick-top-top-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-tips-andtricks
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migrationsesionsession-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-unexpected-exception-exception-and-org-mockito-exceptions-m
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-pendencies- isue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109