Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon PowerMock'u Mockito 2.x kullanırken yaygın istisnalar nelerdir?


PowerMock'u Mockito 2.x kullanırken yaygın istisnalar nelerdir?


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