Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Каковы общие исключения при использовании PowerMock с Mockito 2.x


Каковы общие исключения при использовании PowerMock с Mockito 2.x


При использовании PowerMock с Mockito 2.x несколько общих исключений и проблем могут возникнуть из -за проблем совместимости и изменений в API Mockito. Вот некоторые из наиболее распространенных исключений и как их решить:

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

Это исключение происходит при использовании неправильного расширения API PowerMock. Расширение `powermock-api-mockito` не работает с Mockito 2.x, что приводит к этой ошибке. Чтобы исправить это, вы должны использовать расширение PowerMock-API-Mockito2 `вместо [1] [2].

2. Несовместимые версии Mockito и Powermock **

Использование несовместимых версий Mockito и PowerMock может привести к различным исключениям. Например, PowerMock 1.6.5 обладает экспериментальной поддержкой Mockito 2.x, но это не надежно. Убедитесь, что вы используете совместимые версии, такие как PowerMock 1.7.0 RC2 с Mockito 2.1.0 [1] [2].

3. allodalaccesserror с Mockito 2.7.1 **

При использовании PowerMock 1.6.5 или 1.7.0 RC2 с Mockito 2.7.1, вы можете встретить `vallyalaccesserror '. Эта проблема решается с использованием PowerMock 1.7.0 RC4 [1] [4].

4. RuntimeexceptionProxy в Mockito 2.x с PowerMock **

В Mockito 2.x с PowerMock оригинальные исключения обернуты как `runtimeexceptionproxy`. Это требует модификации тестовых аннотаций от `@Test (weders = someException.class)` to `@Test (weder = exception.class)`, чтобы поймать обернутые исключения [1].

5. FieldNotFoundException с PowerMock's Whitebox **

Mockito 2.x удален Whitebox, поэтому использование Whitebox PowerMock может привести к `fieldNotFoundException '. Если это произойдет, рассмотрите возможность написания собственной реализации или рефакторировать ваш код для лучшей проверки [1] [2].

6. Незаконченный StabbingException **

Это исключение может возникнуть даже при загадке кажется правильным. Убедитесь, что в методах загрязнения нет встроенных макетных творений, и что все загрязнение правильно завершено с помощью таких методов, как `thenreurn ()` или `thenthrow ()` [3].

7. Проблемы совместимости с более новыми версиями Mockito **

PowerMock может быть не совместим с более новыми версиями Mockito, такими как Mockito 4.0.0. В таких случаях может потребоваться использование более старой версии Mockito, совместимой с PowerMock [10].

В целом, переход на Mockito 2.x из Mockito 1.x с PowerMock включает в себя решение этих проблем совместимости и потенциально рефакторинг -тесты, чтобы избежать использования PowerMock [1] [4].

Цитаты:
[1] https://proandroiddev.com/mockito-2-x-over-powermock-tigration-and-tricks-top-ten-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-ntips-and-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-powermock-due-to-unexprected-exception-and-org-mockito- Exceptions-m
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-preadencies-issue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109