JUnit Testcases في Java: Simple JUnit 5.7.1 Hello World Tutorial with All in One Details
نشرت: 2019-10-30
ما هو JUnit؟
JUnit هو إطار عمل بسيط وقوي ومفتوح المصدر لكتابة وتشغيل الاختبارات القابلة للتكرار. أنا أحب تجارب JUnit. أثناء تطوير مشروع Java الخاص بي ، أستخدم JUnit على نطاق واسع لتغطية الكود. إنه مثيل لهندسة xUnit لأطر اختبار الوحدة.
تتضمن ميزات JUnit ما يلي:
- تأكيدات لاختبار النتائج المتوقعة
- تركيبات الاختبار لمشاركة بيانات الاختبار المشتركة
- العدائين اختبار لإجراء الاختبارات
في هذا البرنامج التعليمي سأغطي النقطتين 1 و 3. أنت بحاجة أدناه إلى التبعيات المخضرمة في مشروعك.
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
لنبدأ في كتابة الكود.
الخطوة 1
قم بإنشاء مشروع CrunchifyJunitTest
وحدد الحزمة com.crunchify.junit
. هنا هيكل الحزمة للرجوع اليها بسرعة.

الخطوة 2
انقر بزر الماوس الأيمن على CrunchifyJunitTest
=> فئة جديدة => CrunchifyJunitTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
الخطوه 3
سيقترح Eclipse ويضيف تلقائيًا تبعية org.junit.Test
بمجرد كتابة Test .

الخطوة 4
لاختبار JUnit الخاص بك
- انقر بزر الماوس الأيمن على الفصل
- انقر فوق "تشغيل باسم"
- انقر فوق
JUnit Test
يجب أن نرى شيئا من هذا القبيل.

الخطوة 5
حاول تغيير معلمة القيمة المتوقعة للطريقة من 30 => 300
ومن Hello World => Hello -- World
واختبرها مرة أخرى.
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

الخطوة 6
لنقم الآن بتشغيل نفس حالة الاختبار via other java
. قم CrunchifyRunnerJUnit.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
الخطوة 7
قم بتشغيل CrunchifyRunnerJUnit.java
كتطبيق Java Application
.
الخطوة 8
في حالة 1st code
(المعلمة المتوقعة الصحيحة) ، يجب أن ترى الإخراج مثل هذا:
1 |
Both Tests finished successfully . . . |
الخطوة 9
في حالة 2nd code
(معلمة متوقعة غير صحيحة) ، يجب أن ترى شيئًا كالتالي:
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
وأنت على أتم استعداد. اسمحوا لي أن أعرف إذا كنت ترى أي مشكلة في تشغيل هذا الرمز.
التعليقات التوضيحية المتوفرة في حالة اختبار JUnit:
حاشية. ملاحظة | وصف |
---|---|
@ اختبار أسلوب الفراغ العام () | يحدد التعليق التوضيحيTest أن الطريقة هي طريقة اختبار. |
B Before public void method () | سيتم تنفيذ الطريقة قبل كل اختبار. يمكن أن تقوم هذه الطريقة بإعداد بيئة الاختبار (مثل قراءة بيانات الإدخال ، وتهيئة الفصل). |
@ بعد أسلوب الفراغ العام () | سيتم تنفيذ الطريقة بعد كل اختبار. يمكن لهذه الطريقة تنظيف بيئة الاختبار (مثل حذف البيانات المؤقتة واستعادة الإعدادات الافتراضية). |
BeforeClass طريقة الفراغ العامة () | سيتم تنفيذ الطريقة مرة واحدة ، قبل بدء جميع الاختبارات. يمكن استخدام هذا لأداء أنشطة تستغرق وقتًا طويلاً ، على سبيل المثال للاتصال بقاعدة بيانات. |
AfterClass طريقة الفراغ العامة () | سيتم تنفيذ الطريقة مرة واحدة ، بعد انتهاء جميع الاختبارات. يمكن استخدام هذا لأداء أنشطة التنظيف ، على سبيل المثال لقطع الاتصال بقاعدة البيانات. |
@يتجاهل | سوف نتجاهل طريقة الاختبار. يكون هذا مفيدًا عندما يتم تغيير الكود الأساسي ولم يتم تكييف حالة الاختبار بعد. أو إذا كان وقت تنفيذ هذا الاختبار طويلاً جدًا بحيث يتعذر تضمينه. |
Test (متوقع = Exception.class) | فشل ، إذا لم يقم الأسلوب بإلقاء الاستثناء المحدد. |
@ الاختبار (المهلة = 100) | فشل ، إذا استغرقت الطريقة أكثر من 100 مللي ثانية. |
طرق اختبار التأكيد المتاحة:
إفادة | وصف |
---|---|
فشل (سلسلة) | دع الطريقة تفشل. يمكن استخدامه للتحقق من عدم الوصول إلى جزء معين من الكود. أو أن يكون لديك اختبار فاشل قبل تنفيذ كود الاختبار. |
assertTrue (صحيح) / assertTrue (خطأ) | سيكون دائما صحيحا / خطأ. يمكن استخدامه لتحديد نتيجة الاختبار مسبقًا ، إذا لم يتم تنفيذ الاختبار بعد. |
assertTrue ([message] ، شرط منطقي) | يتحقق من صحة الشرط المنطقي. |
assertsEquals ([رسالة سلسلة] ، المتوقعة ، الفعلية) | اختبارات أن القيمتين متماثلتين. ملاحظة: بالنسبة للمصفوفات ، يتم فحص المرجع وليس محتوى المصفوفات. |
assertsEquals ([رسالة سلسلة] ، المتوقعة ، الفعلية ، التسامح) | اختبار تطابق القيم العائمة أو المزدوجة. التفاوت هو عدد الكسور العشرية التي يجب أن تكون متطابقة. |
assertNull ([رسالة] ، كائن) | يتحقق من أن الكائن فارغ. |
assertNotNull ([رسالة] ، كائن) | يتحقق من أن الكائن ليس فارغًا. |
assertSame ([سلسلة] ، متوقع ، فعلي) | يتحقق من أن كلا المتغيرين يشيران إلى نفس الكائن. |
assertNotSame ([سلسلة] ، متوقع ، فعلي) | يتحقق من أن كلا المتغيرين يشيران إلى كائنات مختلفة. |