عند استخدام PowerMock مع Mockito 2.x ، يمكن أن تنشأ العديد من الاستثناءات والقضايا الشائعة بسبب مشاكل التوافق والتغيرات في واجهة برمجة تطبيقات Mockito. فيما يلي بعض الاستثناءات الأكثر شيوعًا وكيفية معالجتها:
###.
يحدث هذا الاستثناء عند استخدام امتداد PowerMock API الخاطئ. لا يعمل امتداد `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. غير unalfalaccesserror مع Mockito 2.7.1 **
عند استخدام PowerMock 1.6.5 أو 1.7.0 RC2 مع Mockito 2.7.1 ، قد تواجه "غير شرعي AccessError". يتم حل هذه المشكلة باستخدام PowerMock 1.7.0 RC4 [1] [4].4. RunTimeExceptionProxy في Mockito 2.x مع PowerMock **
في Mockito 2.x مع PowerMock ، يتم لف الاستثناءات الأصلية باسم "RunTimeExceptionProxy". يتطلب ذلك تعديل التعليقات التوضيحية للاختبار من `test (متوقع = someException.class)` إلى `test (متوقع = استثناء.5.
Mockito 2.x إزالة Whitebox ، لذلك يمكن أن يؤدي استخدام BowyMock Whitebox إلى "FieldNotFoundException". في حالة حدوث ذلك ، فكر في كتابة التنفيذ الخاص بك أو إعادة بناء الكود الخاص بك من أجل اختبار أفضل [1] [2].6. غير مكتملة stubbingexception **
يمكن أن يحدث هذا الاستثناء حتى عندما يبدو القطع صحيحًا. تأكد من عدم وجود إبداعات وهمية مضمنة داخل طرق القطع وأن كل القطع يتم إكمالها بشكل صحيح بطرق مثل "ThenReturn ()` أو `thenthrow ()` [3].7. مشكلات التوافق مع إصدارات Mockito الأحدث **
قد لا تكون PowerMock متوافقة مع إصدارات Mockito الأحدث ، مثل Mockito 4.0.0. في مثل هذه الحالات ، قد يكون استخدام إصدار أقدم من Mockito متوافقًا مع PowerMock ضروريًا [10].بشكل عام ، يتضمن الترحيل إلى Mockito 2.x من Mockito 1.x مع PowerMock معالجة مشكلات التوافق هذه وإعادة إنشاء الاختبارات المحتملة لتجنب استخدام PowerMocker تمامًا [1] [4].
الاستشهادات:[1] https://proandroiddev.com/mockito-2-x-over-powermock-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-powermockito-weird-stubbing-exception
[4] https://proandroiddev.com/mockito-2-x-migration-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-powermock-due-to-unexpected-exception-and-org-texito-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