Mockito 2.xを使用してPowerMockを使用する場合、互換性の問題とMockito APIの変更により、いくつかの一般的な例外と問題が発生する可能性があります。最も一般的な例外とそれらに対処する方法は次のとおりです。
###1。Noclassdeffounderror:org.mockito.cglib.proxy.methodInterceptor **
この例外は、間違ったPowerMock API拡張機能を使用するときに発生します。 `PowerMock-API-Mockito`拡張機能は、Mockito 2.xで動作しないため、このエラーにつながります。それを修正するには、代わりに[1] [2]の代わりに `PowerMock-API-Mockito2`拡張機能を使用する必要があります。
2。モッキートとパワーモックの互換性のないバージョン**
モッキートとパワーモックの互換性のないバージョンを使用すると、さまざまな例外につながる可能性があります。たとえば、PowerMock 1.6.5にはMockito 2.xを実験的にサポートしていますが、信頼性はありません。 Mockito 2.1.0 [1] [2]を備えたPowerMock 1.7.0 RC2などの互換性のあるバージョンを使用してください。###3。Mockito2.7.1を備えたIllegalaccesserror **
Mockito 2.7.1でPowerMock 1.6.5または1.7.0 RC2を使用すると、「Illegalaccesserror」に遭遇する可能性があります。この問題は、PowerMock 1.7.0 RC4 [1] [4]を使用して解決されます。
###4。Mockito2.xのruntimeexceptionproxy with powermock **
PowerMockを使用したMockito 2.xでは、元の例外が「runtimeexceptionproxy」として包まれています。これには、 `@test(expects = someexception.class)から@test(expects = exception.class)`からラップされた例外[1]からテストアノテーションを変更する必要があります。
###5。PowerMockのホワイトボックスを使用したFieldNotFoundException **
Mockito 2.xはWhiteBoxを削除したため、PowerMockのWhiteBoxを使用すると「FieldNotFoundException」につながる可能性があります。これが発生した場合は、独自の実装を書くか、テスト可能性を向上させるためにコードをリファクタリングすることを検討してください[1] [2]。
###6。未完成のexception **
この例外は、スタブが正しいと思われる場合でも発生する可能性があります。スタブメソッド内にインラインモック作成がなく、すべてのスタブが「sonreturn() `または` thenthrow() `[3]などの方法で適切に完了していることを確認してください。
7。新しいモッキートバージョンとの互換性の問題**
PowerMockは、Mockito 4.0.0などの新しいMockitoバージョンと互換性がない場合があります。そのような場合、PowerMockと互換性のあるMockitoの古いバージョンを使用する必要があるかもしれません[10]。全体として、PowerMockを使用してMockito 1.xからMockito 2.xに移行するには、これらの互換性の問題に対処し、PowerMockを完全に使用することを避けるためにテストをリファクタリングする可能性があります[1] [4]。
引用:[1] https://proandroiddev.com/mockito-2-x-overmock-migration-tips-and-tricks-top-top-top-ten118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-overmock migration-top-10-tips-and-tricks
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migration-session-retoding-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-ception-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