PowerMock'u Mockito 2.x ile kullanırken, uyumluluk sorunları ve Mockito API'sındaki değişiklikler nedeniyle birkaç yaygın istisna ve sorun ortaya çıkabilir. İşte en yaygın istisnalardan bazıları ve bunların nasıl ele alınacağı:
1. NoclassdeffoundError: org.mockito.cgllib.proxy.metodinterceptor **
Bu istisna, yanlış PowerMock API uzantısı kullanılırken ortaya çıkar. `PowerMock-api-mockito` uzantısı Mockito 2.x ile çalışmaz ve bu hataya yol açar. Düzeltmek için, bunun yerine `powerMock-api-mockito2 'uzantısını kullanmalısınız [1] [2].2. Mockito ve PowerMock'un Uyumsuz Sürümleri **
Mockito ve PowerMock'un uyumsuz versiyonlarını kullanmak çeşitli istisnalara yol açabilir. Örneğin, PowerMock 1.6.5, Mockito 2.x için deneysel desteğe sahiptir, ancak güvenilir değildir. Mockito 2.1.0 [1] [2] ile PowerMock 1.7.0 RC2 gibi uyumlu sürümler kullandığınızdan emin olun.3. Mockito ile Yasadışı
Mockito 2.7.1 ile PowerMock 1.6.5 veya 1.7.0 RC2 kullanırken, bir `` YasadışıCesserRor 'ile karşılaşabilirsiniz. Bu sorun PowerMock 1.7.0 RC4 [1] [4] kullanılarak çözülür.4. PowerMock ile Mockito 2.x RuntiMeExceptionProxy **
PowerMock ile Mockito 2.x'te, orijinal istisnalar `` runtiMeExceptionProxy '' olarak sarılır. Bu, sarılmış istisnaları yakalamak için `@Test (Beklenen = SoundException.class) 'dan` @test (Beklenen = Exception.class)' dan test ek açıklamalarının değiştirilmesini gerektirir [1].5. PowerMock'un Beyaz Kutusu ile FieldNotfoundException **
Mockito 2.x Beyaz kutuyu kaldırdı, bu nedenle PowerMock'un beyaz kutusunu kullanmak 'FieldNotFoundException'a yol açabilir. Bu gerçekleşirse, kendi uygulamanızı yazmayı veya daha iyi test edilebilirlik için kodunuzu yeniden düzenlemeyi düşünün [1] [2].6. BitirilmişstubbingException **
Bu istisna, saplama doğru göründüğünde bile ortaya çıkabilir. Sıfatlama yöntemlerinde satır içi sahte kreasyonların olmadığından ve tüm stubbing'in `` opleRurn () 'veya `thenthrow ()` [3] gibi yöntemlerle düzgün bir şekilde tamamlandığından emin olun.7. Yeni Mockito sürümleriyle uyumluluk sorunları **
PowerMock, Mockito 4.0.0 gibi daha yeni Mockito sürümleriyle uyumlu olmayabilir. Bu gibi durumlarda, PowerMock ile uyumlu eski bir Mockito sürümünü kullanmak gerekli olabilir [10].Genel olarak, PowerMock ile Mockito 1.x'ten Mockito 2.x'e göç etmek, bu uyumluluk sorunlarının ele alınmasını ve PowerMock'u tamamen kullanmaktan kaçınmak için testlerin potansiyel olarak yeniden düzenlenmesini içerir [1] [4].
Alıntılar:[1] https://proandroiddev.com/mockito-2-x-over-powermock-migration-tips ve tricks-ten-18c52abd1d8
[2] https://dzone.com/articles/mockito-2x-over-powermock-migration-top-10-tricks
[3] https://stackoverflow.com/questions/33441494/mockito-powermockito-weird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migration-session-decorping-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-sun-powermock-due-to-nexpected-exception-and-org-mockitoxceptions-m
[8] https://stackoverflow.com/questions/61208743/powermock-with-mockito-decens-sison
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109