Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon هل هناك أي بدائل لـ Hamcrest تعمل بشكل أفضل مع Mockito


هل هناك أي بدائل لـ Hamcrest تعمل بشكل أفضل مع Mockito


عند العمل مع Mockito ، غالبًا ما يتم استخدام Hamcrest لمطابقاتها التعبيرية ، مما يعزز قابلية قراءة الاختبارات. ومع ذلك ، هناك بدائل يمكن أن تعمل بشكل جيد مع Mockito ، ولكل منها نقاط القوة والضعف الخاصة بها.

Assertj

Assertj هو بديل شائع لـ Hamcrest لكتابة التأكيدات في اختبارات الوحدة. يوفر واجهة برمجة تطبيقات بطلاقة يجدها العديد من المطورين أسهل في الاستخدام وأكثر تعبيرية من Hamcrest. غالبًا ما يُفضل بناء جملة Assertj لقابليته للقراءة والقدرة على إنشاء تأكيدات مخصصة بسهولة. على الرغم من أن AssertJ لا تتكامل بشكل مباشر مع Mockito مثل Hamcrest ، إلا أنه يمكن استخدامه إلى جانب Mockito للتأكيدات ، مما يجعل الاختبارات أكثر قابلية للقراءة والصيانة. ومع ذلك ، فإن Assertj يركز بشكل أساسي على التأكيدات بدلاً من قدرات المطابقة الأوسع لـ Hamcrest [1] [3].

حقيقة

الحقيقة هي مكتبة تأكيد أخرى طورتها Google. إنه يوفر واجهة برمجة تطبيقات بطلاقة مماثلة لـ AssertJ ولكنه يركز أكثر على توفير دعم أفضل لإكمال تلقائي في IDES ، والذي يمكن أن يكون مفيدًا لاكتشاف التأكيدات المتاحة. الحقيقة ليست شائعة الاستخدام مع Mockito مثل Hamcrest ولكن يمكن استخدامها للتأكيدات في الاختبارات. مثل Assertj ، تركز الحقيقة بشكل أكبر على التأكيدات بدلاً من المطابقة للأغراض العامة التي يوفرها Hamcrest [3].

Mockito المدمجون

يوفر Mockito نفسها المطاعم التي يمكن استخدامها لاستخلاص التفاعلات والتحقق منها مع الكائنات الوهمية. يعيد هذه المطاعم النوع الذي يطابقونه (على سبيل المثال ، "أي (integer.class)` يعيد "عدد صحيح") ، وهو يختلف عن مطابقة Hamcrest التي تعيد "مطابقة". لاستخدام Hamcrest Matchers مع Mockito ، يمكنك استخدام "Argthat" أو Mockitohamcrest.argthat "لتحويل مطابقة Hamcrest إلى شكل متوافق مع Mockito [7].

تطبيقات مخصصة

بالنسبة للسيناريوهات التي تفضل فيها عدم استخدام المكتبات الخارجية ، يمكنك تنفيذ المطاعم أو التأكيدات الخاصة بك. يسمح هذا النهج بالتحكم الكامل في السلوك وبناء الجملة ولكنه يتطلب المزيد من الجهد والصيانة. لا ينصح عادة إلا إذا كان لديك احتياجات محددة للغاية لا تلبيها المكتبات الحالية.

خاتمة

بينما يستخدم Hamcrest على نطاق واسع مع Mockito بسبب مرونته والتعبير ، فإن بدائل مثل Assertj والحقيقة يمكن أن تعزز جزء التأكيد من اختباراتك. إذا كنت تبحث عن شيء يتكامل بشكل جيد مع Mockito لأغراض مطابقة ، فإن Hamcrest لا يزال خيارًا قويًا ، ولكن يمكنك استخدام المباراة إلى جانب مكتبات التأكيد الأخرى لتجربة اختبار أكثر شمولاً. في نهاية المطاف ، يعتمد الاختيار على احتياجاتك وتفضيلاتك المحددة فيما يتعلق بسهولة القراءة وسهولة الاستخدام ونوع التأكيدات أو التطابقات التي تحتاجها في الاختبارات الخاصة بك.

الاستشهادات:
[1] https://www.reddit.com/r/java/comments
[2] https://www.javacodegeeks.com/2015/11/hamcrest-matchers-tutorial.html
[3] https://truth.dev/comparison.html
[4]
[5] https://www.infoworld.com/article/2257253/junit-5-tutorial-bart-1-unit-testing-with-junit-5-mockito-and-hamcrest.html
[6] https://softwareengineering.stackexchange.com/questions/447953/alternatives-to-using-mock-libraries-such-as-mockito-in-unit-testing
[7] https://stackoverflow.com/questions/8348046/mockitos-matcher-vs-hamcrest-matcher
[8] https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-using-the-deprecated-hamcrest-method-is