مقدمة إلى JUnit 5
\n\nJUnit 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
الابتكارات الرئيسية في 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).
<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:
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 ونكتب اختبارًا لها.
1. الفئة المراد اختبارها (Calculator.java):
\npublic class Calculator {\n public int add(int a, int b) {\n return a + b;\n }\n\n public int divide(int a, int