JUnit برنامج تعليمي للتعليقات التوضيحية مع مثال: ما هو @Test و@After

ما هي تفاصيل JUnit شروح؟

JUnit الشروح هو شكل خاص من البيانات الوصفية النحوية التي يمكن إضافتها إلى كود مصدر Java لتحسين إمكانية قراءة التعليمات البرمجية وبنيتها. يمكن وضع تعليقات توضيحية على المتغيرات والمعلمات والحزم والأساليب والفئات. تم تقديم التعليقات التوضيحية في Junit4، مما يجعل كود جافا أكثر readable وبسيطة. هذا هو الفرق الكبير بين Junitو3 Junit4 ذلك Junit4 يعتمد على التعليق التوضيحي.

مع العلم بالشروح في Junit5، يمكن للمرء بسهولة تعلم وتنفيذ أ JUnit امتحان. أدناه هو المهم والمستخدم بشكل متكرر JUnit قائمة التعليقات التوضيحية:

العدد التسلسلي الشروح الوصف
1. @اختبار هذا التعليق التوضيحي هو بديل لـ org.junit.TestCase الذي يشير إلى أنه يمكن تنفيذ طريقة الفراغ العامة المرفقة بها كحالة اختبار.
2. @قبل يتم استخدام هذا التعليق التوضيحي إذا كنت تريد تنفيذ بعض العبارات مثل الشروط المسبقة قبل كل حالة اختبار.
3. @قبل الفصل يتم استخدام هذا التعليق التوضيحي إذا كنت تريد تنفيذ بعض العبارات قبل تنفيذ جميع حالات الاختبار، على سبيل المثال، اختبار الاتصال قبل جميع حالات الاختبار.
4. @بعد يمكن استخدام هذا التعليق التوضيحي إذا كنت تريد تنفيذ بعض العبارات بعد كل منها حالة الاختبار على سبيل المثال، إعادة تعيين المتغيرات، وحذف الملفات المؤقتة، والمتغيرات، وما إلى ذلك.
5. @بعد الفصل يمكن استخدام هذا التعليق التوضيحي إذا كنت تريد تنفيذ بعض العبارات بعد كل حالات الاختبار، على سبيل المثال، تحرير الموارد بعد تنفيذ جميع حالات الاختبار.
6. @يتجاهل يمكن استخدام هذا التعليق التوضيحي إذا كنت تريد تجاهل بعض العبارات أثناء تنفيذ الاختبار، على سبيل المثال، تعطيل بعض حالات الاختبار أثناء تنفيذ الاختبار.
7. @اختبار (المهلة = 500) يمكن استخدام هذا التعليق التوضيحي إذا كنت تريد تعيين بعض المهلة أثناء تنفيذ الاختبار، على سبيل المثال، إذا كنت تعمل بموجب اتفاقية مستوى الخدمة (SLA)، ويجب إكمال الاختبارات خلال وقت محدد.
8. @Test(المتوقع=IllegalArgumentException.class) يمكن استخدام هذا التعليق التوضيحي إذا كنت تريد معالجة بعض الاستثناءات أثناء تنفيذ الاختبار. على سبيل المثال، إذا كنت تريد التحقق مما إذا كانت طريقة معينة فعالة أم لاwing استثناء محدد أم لا.

JUnit مثال التعليقات التوضيحية

دعونا ننشئ طبقة تغطي المهم JUnit التعليقات التوضيحية مع عبارات الطباعة البسيطة وتنفيذها باستخدام فئة عداء الاختبار:

الخطوة 1) خذ بعين الاعتبار أدناه فئة Java التي تحتوي على طرق مختلفة مرتبطة بالتعليقات التوضيحية المذكورة أعلاه:

Junitالتعليقات التوضيحيةExample.java

package guru99.junit;		

import static org.junit.Assert.assertEquals;				
import static org.junit.Assert.assertFalse;				

import java.util.ArrayList;		

import org.junit.After;		
import org.junit.AfterClass;		
import org.junit.Before;		
import org.junit.BeforeClass;		
import org.junit.Ignore;		
import org.junit.Test;		

public class JunitAnnotationsExample {				

    private ArrayList<String> list;					

    @BeforeClass		
    public static void m1() {							
        System.out.println("Using @BeforeClass , executed before all test cases ");					
    }		

    @Before		
    public void m2() {					
        list = new ArrayList<String>();					
        System.out.println("Using @Before annotations ,executed before each test cases ");					
    }		

    @AfterClass		
    public static void m3() {							
        System.out.println("Using @AfterClass ,executed after all test cases");					
    }		

    @After		
    public void m4() {					
        list.clear();			
        System.out.println("Using @After ,executed after each test cases");					
    }		

    @Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

    @Ignore		
    public void m6() {					
        System.out.println("Using @Ignore , this execution is ignored");					
    }		

    @Test(timeout = 10)			
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

    @Test(expected = NoSuchMethodException.class)					
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					

    }		

}		

الخطوة 2) لنقم بإنشاء فئة عداء اختبار لتنفيذ الاختبار أعلاه:

TestRunner.java

package guru99.junit;		

import org.junit.runner.JUnitCore;		
import org.junit.runner.Result;		
import org.junit.runner.notification.Failure;		

public class TestRunner {				
			public static void main(String[] args) {									
      Result result = JUnitCore.runClasses(JunitAnnotationsExample.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

نتيجة متوقعة

  • سيتم تنفيذ جميع حالات الاختبار واحدة تلو الأخرى، ويمكن رؤية جميع عبارات الطباعة على وحدة التحكم.
  • كما تمت مناقشته في الجدول أعلاه @Before، التعليق التوضيحي في JUnitسيتم تنفيذ @BeforeClass [method m1() و m2()] قبل كل حالة اختبار وقبل كل حالات الاختبار على التوالي.
  • بنفس الطريقة @After in JUnitسيتم تنفيذ @afterClass (الطريقة m3() وm4()) بعد كل حالة اختبار وبعد كل حالات الاختبار على التوالي. سيتم التعامل مع @ignore (الطريقة m6()) على أنها تجاهل للاختبار.

دعنا نحلل حالات الاختبار المستخدمة في فئة Java أعلاه بالتفصيل:

  1. خذ بعين الاعتبار الطريقة m5() كما هو موضح أدناه:
	@Test		
    public void m5() {					
        list.add("test");					
        assertFalse(list.isEmpty());			
        assertEquals(1, list.size());			
    }		

في الطريقة المذكورة أعلاه، تقوم بإضافة سلسلة في "القائمة" المتغيرة

  • القائمة فارغة() سيعود خطأ.
  • AssureFalse(list.isEmpty()) يجب أن يعود صحيحا.
  • ونتيجة لذلك، فإن حالة الاختبار سوف pass .

وبما أنك أضفت سلسلة واحدة فقط في القائمة، فإن الحجم هو واحد.

  • حجم القائمة () يجب أن تُرجع قيمة int كـ "1".
  • So AssurEquals(1, list.size()) يجب أن يعود صحيحا.
  • ونتيجة لذلك، فإن حالة الاختبار سوف pass .
  1. خذ بعين الاعتبار الطريقة m7() كما هو موضح أدناه:
@Test(timeout = 10)		
    public void m7() {					
        System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case");					
    }		

كما نوقش أعلاه @اختبار (المهلة = 10)يتم استخدام التعليق التوضيحي لفرض المهلة في حالة الاختبار.

  1. خذ بعين الاعتبار الطريقة m8() كما هو موضح أدناه:
@Test(expected = NoSuchMethodException.class)				
    public void m8() {					
        System.out.println("Using @Test(expected) ,it will check for specified exception during its execution");					
    
    }		

كما نوقش أعلاه @اختبار(متوقع) سوف يتحقق من وجود استثناء محدد أثناء تنفيذه، لذلك ستطرح الطريقة m8() "لا يوجد استثناء من هذا القبيل." ونتيجة لذلك، سيتم تنفيذ الاختبار مع استثناء.

عندما يتم اجتياز جميع حالات الاختبار، يؤدي ذلك إلى تنفيذ اختبار ناجح.

نتيجة فعلية

نظرًا لوجود ثلاث حالات اختبار في المثال أعلاه، سيتم تنفيذ جميع حالات الاختبار واحدة تلو الأخرى. انظر الإخراج أدناه:

JUnit مثال التعليقات التوضيحية
JUnit مثال التعليقات التوضيحية

انظر أدناه بيانات الطباعة التي يمكن رؤيتها على وحدة التحكم:

باستخدام @BeforeClass، يتم تنفيذه قبل جميع حالات الاختبار

استخدام التعليقات التوضيحية @Before، والتي يتم تنفيذها قبل كل حالات الاختبار

باستخدام @After، يتم تنفيذه بعد كل حالة اختبار

استخدام التعليقات التوضيحية @Before، والتي يتم تنفيذها قبل كل حالات الاختبار

باستخدام @Test(timeout)، يمكن استخدامه لفرض المهلة JUnit4 حالة اختبار

باستخدام @After، يتم تنفيذه بعد كل حالة اختبار

استخدام التعليقات التوضيحية @Before، والتي يتم تنفيذها قبل كل حالات الاختبار

باستخدام @Test(expected)، سيتم التحقق من الاستثناء المحدد أثناء تنفيذه

باستخدام @After، يتم تنفيذه بعد كل حالة اختبار

باستخدامAfterClass، يتم تنفيذه بعد كل حالات الاختبار

JUnit تأكيد الطبقة

توفر هذه الفئة مجموعة من أساليب التأكيد المفيدة في كتابة حالة الاختبار. إذا تم تمرير كافة عبارات التأكيد، تكون نتائج الاختبار ناجحة. إذا فشلت أي عبارة تأكيد، فستفشل نتائج الاختبار.

كما رأيت سابقًا، يصف الجدول أدناه طرق التأكيد المهمة ووصفها:

العدد التسلسلي خدمة التوصيل الوصف
1. تأكيد باطل (منطقي متوقع، منطقي فعلي) يتحقق مما إذا كانت القيمتان متساويتان مشابهتان لطريقة يساوي لفئة الكائن
2. تأكيد باطلة (شرط منطقي) وظيفتها هي التحقق من أن الشرط غير صحيح.
3. تأكيد باطلةNotNull (كائن كائن) وظيفة "assertNotNull" هي التحقق من أن الكائن ليس فارغًا.
4. تأكيد باطلة (كائن كائن) وظيفة "assertNull" هي التحقق من أن الكائن فارغ.
5. تأكيد باطلة (شرط منطقي) وظيفة "assertTrue" هي التحقق من صحة الشرط.
6. فشل باطل () إذا كنت تريد إلقاء أي خطأ في التأكيد، فلديك Fail() الذي يؤدي دائمًا إلى حكم الفشل.
7. تأكيد باطلة ([رسالة سلسلة] وظيفة "assertSame" هي التحقق من أن الكائنين يشيران إلى نفس الكائن.
8. تأكيد باطلةNotSame([رسالة سلسلة] وظيفة "assertNotSame" هي التحقق من أن الكائنين لا يشيران إلى نفس الكائن.

JUnit فئة حالات الاختبار

لإجراء اختبار متعدد، تتوفر فئة TestCase في غزاله.junit.حالة اختبار الحزم. يقول التعليق التوضيحيTest JUnit أنه يمكن تشغيل طريقة الفراغ العام هذه (حالة الاختبار هنا) المرفقة بها كحالة اختبار.

ويبين الجدول أدناه بعض الطرق الهامة المتوفرة في غزاله.junit.حالة اختبار صف دراسي:

العدد التسلسلي خدمة التوصيل الوصف
1. عدد صحيحTestCases () تُستخدم هذه الطريقة لحساب عدد حالات الاختبار التي تم تنفيذها بواسطة تشغيل (TestResult tr) الأسلوب.
2. نتيجة الاختبار createResult() يتم استخدام هذه الطريقة لإنشاء نتيجة الفحص موضوع.
3. سلسلة getName () تقوم هذه الطريقة بإرجاع سلسلة ليست سوى ملف حالة اختبار.
4. تشغيل نتيجة الاختبار () تُستخدم هذه الطريقة لتنفيذ اختبار يُرجع ملفًا نتيجة الفحص موضوع
5. تشغيل باطل (نتيجة TestResult) يتم استخدام هذه الطريقة لتنفيذ اختبار يحتوي على نتيجة الفحص كائن لا يُرجع أي شيء.
6. setName باطل (اسم السلسلة) يتم استخدام هذه الطريقة لتعيين اسم ل حالة اختبار.
7. الإعداد باطل() يتم استخدام هذه الطريقة لكتابة رمز اقتران المورد. على سبيل المثال، إنشاء اتصال بقاعدة البيانات.
8. تمزيق باطلة () يتم استخدام هذه الطريقة لكتابة كود إصدار المورد. على سبيل المثال، قم بتحرير اتصال قاعدة البيانات بعد إجراء المعاملة operaنشوئها.

JUnit فئة نتيجة الاختبار

عند تنفيذ اختبار، فإنه يقوم بإرجاع النتيجة (في شكل نتيجة الفحص هدف). يمكن استخدام كائن TestResult هذا لتحليل الكائن الناتج. يمكن أن تكون نتيجة الاختبار هذه إما فاشلة أو ناجحة.

انظر الجدول أدناه للتعرف على الطرق المهمة المستخدمة في org.junitفئة نتيجة الاختبار:

العدد التسلسلي خدمة التوصيل الوصف
1. خطأ addError (اختبار اختبار، قابل للرمي) يتم استخدام هذه الطريقة إذا كنت بحاجة إلى إضافة خطأ إلى الاختبار.
2. باطلة addFailure (اختبار اختبار، AssertionFailedError t) يتم استخدام هذه الطريقة إذا كنت تريد إضافة فشل إلى قائمة حالات الفشل.
3. نهاية باطلة (اختبار اختبار) تُستخدم هذه الطريقة للإخطار بإجراء الاختبار (مكتمل)
4. عدد الأخطاء int() يتم استخدام هذه الطريقة لاكتشاف الخطأ أثناء تنفيذ الاختبار.
5. تعداد أخطاء () تقوم هذه الطريقة ببساطة بإرجاع مجموعة من الأخطاء (التعداد هنا).
6. عدد الفشل الدولي () يتم استخدام هذه الطريقة للحصول على عدد الأخطاء المكتشفة أثناء تنفيذ الاختبار.
7. تشغيل باطل (اختبار TestCase) يتم استخدام هذه الطريقة لتنفيذ حالة اختبار.
8. كثافة العمليات RunCount () هذه الطريقة تحسب ببساطة الاختبار الذي تم تنفيذه.
9. بداية باطلةTest (اختبار اختبار) يتم استخدام هذه الطريقة للإخطار ببدء الاختبار.
10 توقف باطل () يتم استخدام هذه الطريقة لاختبار التشغيل حتى يتم إيقافه.

JUnit فئة جناح الاختبار

إذا كنت ترغب في تنفيذ اختبارات متعددة بترتيب محدد، فيمكن القيام بذلك عن طريق الجمع بين جميع الاختبارات في مكان واحد. يُطلق على هذا المكان اسم أجنحة الاختبار.

انظر الجدول أدناه لمعرفة الطرق الهامة المستخدمة في غزاله.junit.حزمة اختبار صف دراسي:

العدد التسلسلي خدمة التوصيل الوصف
1. باطلة addTest (اختبار اختبار) يتم استخدام هذه الطريقة إذا كنت تريد إضافة اختبار إلى المجموعة.
2. باطلة addTestSuite(Class فئة الاختبار) يتم استخدام هذه الطريقة إذا كنت تريد تحديد الفصل أثناء إضافة اختبار إلى المجموعة.
3. عدد صحيحTestCases () يتم استخدام هذه الطريقة إذا كنت تريد حساب عدد حالات الاختبار.
4. سلسلة getName () تُستخدم هذه الطريقة للحصول على اسم مجموعة الاختبار.
5. تشغيل باطل (نتيجة TestResult) يتم استخدام هذه الطريقة لتنفيذ الاختبار وجمع نتيجة الاختبار نتيجة الفحص موضوع.
6. setName باطل (اسم السلسلة) يتم استخدام هذه الطريقة لتعيين اسم حزمة اختبار.
7. اختبار الاختبار في (فهرس كثافة العمليات) يتم استخدام هذه الطريقة إذا كنت تريد إعادة الاختبار إلى فهرس معين.
8. كثافة العمليات اختبار الكونت () يتم استخدام هذه الطريقة إذا كنت تريد إرجاع عدد من الاختبارات في Suite.
9. تحذير اختبار ثابت (رسالة سلسلة) تقوم هذه الطريقة بإرجاع اختبار سيفشل وتسجيل رسالة تحذير.

نبذة عامة

  • JUnit يوفر واجهة برمجة تطبيقات محمولة، والتي توفر جميع الفئات المهمة و Selenium الشروح مفيدة في كتابة اختبار الوحدة.
  • فصول مفيدة جدًا أثناء كتابة حالة الاختبار
    • غزاله.junit.يجزم
    • غزاله.junit.حالة اختبار
    • غزاله.junit.نتيجة الاختبار
    • غزاله.junit.حزمة اختبار
  • مهم ويستخدم بشكل متكرر JUnit قائمة التعليقات التوضيحية@قبل@قبل_الفصل@بعد

    @بعد الفصل

    @اختبار

    @يتجاهل