Ao usar o PowerMock com o Mockito 2.x, várias exceções e questões comuns podem surgir devido a problemas de compatibilidade e alterações na API da Mockito. Aqui estão algumas das exceções mais comuns e como abordá -las:
1. NoclassDeffoundError: org.mockito.cglib.proxy.methodintercept **
Esta exceção ocorre ao usar a extensão da API do PowerMock errada. A extensão `PowerMock-Api-Mockito` não funciona com o Mockito 2.x, levando a esse erro. Para corrigi-lo, você deve usar a extensão `PowerMock-api-mockito2` [1] [2].2. Versões incompatíveis de Mockito e Powermock **
O uso de versões incompatíveis de Mockito e PowerMock pode levar a várias exceções. Por exemplo, o PowerMock 1.6.5 possui suporte experimental ao Mockito 2.x, mas não é confiável. Certifique -se de usar versões compatíveis, como o PowerMock 1.7.0 RC2 com o Mockito 2.1.0 [1] [2].3. IllegalAccessError com Mockito 2.7.1 **
Ao usar o PowerMock 1.6.5 ou 1.7.0 RC2 com o Mockito 2.7.1, você pode encontrar um 'ilegalaccesserror'. Este problema é resolvido usando o PowerMock 1.7.0 RC4 [1] [4].4. RuntimeExceptionProxy no Mockito 2.x com PowerMock **
No Mockito 2.x com o PowerMock, as exceções originais são embrulhadas como `RUNTimeExceptionProxy '. Isso requer modificação de anotações de teste de `@test (esperado = algumaception.class)` para `@test (esperado = excepção.class)` para capturar as exceções embrulhadas [1].5. FieldNotFoundException com PowerMock's WhiteBox **
O Mockito 2.x removeu o WhiteBox, portanto, o uso do WhiteBox da PowerMock pode levar ao `FieldNotFoundException`. Se isso ocorrer, considere escrever sua própria implementação ou refatorar seu código para uma melhor testabilidade [1] [2].6.
Essa exceção pode ocorrer mesmo quando a extração parece correta. Certifique -se de que não haja criações simuladas em linha nos métodos de stubbing e que todas as mortidas sejam conceituadas adequadamente com métodos como `thenGurn ()` ou `thenthrow ()` [3].
7. Problemas de compatibilidade com versões mais recentes do Mockito **
O PowerMock pode não ser compatível com versões mais recentes do Mockito, como o Mockito 4.0.0. Nesses casos, pode ser necessário usar uma versão mais antiga do Mockito compatível com o PowerMock [10].No geral, a migração para a Mockito 2.x do Mockito 1.x com o PowerMock envolve abordar esses problemas de compatibilidade e potencialmente refatorar testes para evitar o uso completamente do PowerMock [1] [4].
Citações:[1] https://proandroiddev.com/mockito-2-x-overpowermock-migration-tips-and-tricks-top-ten-118c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-tips-and-tricks
[3] https://stackoverflow.com/questions/33441494/mockito-powowermockito-werraird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migration-session-rendinging-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-and-org-mockito-excepções-m
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-dependences-issue
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109