JUnit 5 لجافا: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة إلى JUnit 5

\n\n

JUnit 5 هو إطار عمل حديث لاختبار الوحدات (unit testing) بلغة جافا. وهو تطور تطوري لـ JUnit 4 الشهير، ويُعتبر المعيار الفعلي في نظام جافا البيئي لكتابة الاختبارات الآلية. JUnit 5 ليس مجرد تحديث، بل هو بنية معاد تصميمها بالكامل، تتكون من ثلاثة مشاريع فرعية: JUnit Platform (تشغيل الاختبارات)، JUnit Jupiter (نموذج برمجة وإضافات جديد)، وJUnit Vintage (توافق عكسي مع JUnit 3/4).

\n\n

لماذا نحتاج JUnit 5؟ في التطوير الحديث (خاصة في منهجيات TDD — التطوير القائم على الاختبارات)، الاختبار ليس خيارًا، بل مرحلة إلزامية. يتيح لك JUnit 5:

\n
    \n
  • أتمتة التحقق من الكود: تشغيل مئات الاختبارات بأمر واحد.
  • \n
  • ضمان الموثوقية التراجعية: التأكد من أن الكود الجديد لم يكسر الوظائف القديمة.
  • \n
  • تحسين تصميم الكود: غالبًا ما يكون الكود القابل للاختبار أكثر نمطية وأقل ترابطًا.
  • \n
  • توثيق السلوك: تعمل الاختبارات كتوثيق حي يوضح كيفية عمل الفئة أو الطريقة.
  • \n
  • التكامل مع CI/CD: يتكامل JUnit 5 بسهولة مع Maven وGradle وJenkins وGitHub Actions.
  • \n
\n\n

الابتكارات الرئيسية في JUnit 5 مقارنة بـ JUnit 4: جيل جديد من التعليقات التوضيحية (@Test, @ParameterizedTest, @Nested)، نظام إضافات قوي (Extensions)، دعم تعبيرات لامدا وواجهات برمجة التطبيقات التدفقية، بالإضافة إلى دعم مدمج للاختبارات المعلمية والديناميكية.

\n\n

تثبيت JUnit 5

\n\n

نظرًا لأن جافا لغة مُجمّعة، يتم التثبيت عبر مديري التبعيات (Maven أو Gradle). لا يتم تثبيت JUnit 5 عبر pip أو npm. فيما يلي إرشادات لنظامي البناء الأكثر شيوعًا.

\n\n

التثبيت عبر Maven (pom.xml)

\n

أضف التبعيات التالية إلى ملف pom.xml الخاص بك. يُوصى باستخدام أحدث إصدار ثابت (في وقت الكتابة — 5.11.0، تحقق من الإصدار الأحدث على MVNRepository).

\n
<dependencies>\n    <!-- الوحدة الرئيسية لـ JUnit Jupiter (تتضمن API وEngine والمعلمات) -->\n    <dependency>\n        <groupId>org.junit.jupiter</groupId>\n        <artifactId>junit-jupiter</artifactId>\n        <version>5.11.0</version>\n        <scope>test</scope>\n    </dependency>\n    <!-- (اختياري) للتوافق مع JUnit 4 -->\n    <dependency>\n        <groupId>org.junit.vintage</groupId>\n        <artifactId>junit-vintage-engine</artifactId>\n        <version>5.11.0</version>\n        <scope>test</scope>\n    </dependency>\n</dependencies>
\n\n

التثبيت عبر Gradle (build.gradle)

\n

أضف إلى قسم dependencies:

\n
dependencies {\n    testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0'\n    // (اختياري) لـ JUnit 4\n    testImplementation 'org.junit.vintage:junit-vintage-engine:5.11.0'\n}\n\ntest {\n    useJUnitPlatform() // إلزامي لتفعيل JUnit 5\n}
\n\n

التثبيت بدون نظام بناء (Plain Java)

\n

إذا كنت لا تستخدم Maven/Gradle، قم بتنزيل ملفات JAR من المستودع الرسمي وأضفها إلى classpath لمشروعك. ومع ذلك، لا يُوصى بشدة بذلك للمشاريع الحقيقية.

\n\n

بداية سريعة: أول اختبار باستخدام JUnit 5

\n\n

لننشئ فئة بسيطة Calculator ونكتب اختبارًا لها.

\n\n

1. الفئة المراد اختبارها (Calculator.java):

\n
public class Calculator {\n    public int add(int a, int b) {\n        return a + b;\n    }\n\n    public int divide(int a, int                    

توصيات