JUnit اختبار الاستثناء المتوقع: @Test(متوقع)

JUnit يوفر المرفق لـ trace الاستثناء وأيضًا للتحقق مما إذا كان الكود يطرح الاستثناء المتوقع أم لا.

يوفر Junit4 طريقة سهلة وقابلة للقراءة لاختبار الاستثناءات، ويمكنك استخدامها

  • المعلمة الاختيارية (المتوقعة) للتعليق التوضيحي @test و
  • إلى tracيمكن استخدام المعلومات "fail()"

بينما الاختبار استثناء، تحتاج إلى التأكد من أن فئة الاستثناء التي تقدمها في تلك المعلمة الاختيارية @التعليق التجريبي هو نفسه. هذا لأنك تتوقع استثناءً من الطريقة التي أنت عليها وحدة التجاربوإلا فإن JUnit سيفشل الاختبار.

example@Test(المتوقع=IllegalArgumentException.class)

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

مثال باستخدام @test(متوقع)

دعونا نفهم اختبار الاستثناء من خلال إنشاء ملف Java فئة تحتوي على طريقة ترمي استثناءً. ستتعامل معها وتختبرها في فئة اختبار. ضع في اعتبارك JUnitتحتوي رسالة java على طريقة تقوم ببساطة بإجراء عملية حسابية بناءً على المدخلات التي يتلقاها المستخدم. إذا تم إدخال أي وسيطة غير قانونية، فسوف يتم طرح "ArithmeticException". انظر أدناه:

مثال باستخدامTest

package guru99.junit;

public class JUnitMessage{

	private String message;

	public JUnitMessage(String message) {
		this.message = message;
	}

public void printMessage(){

	System.out.println(message); 
	int divide=1/0;

}

public String printHiMessage(){ 

	message="Hi!" + message;
	
	System.out.println(message);

	return message;
}

}

Code التفسير:

  • Code خط 7: إنشاء مُنشئ ذو معلمات مع تهيئة الحقل.
  • Code السطر 11-14: إنشاء طريقة للعمليات الرياضية.
  • Code خط 18: إنشاء طريقة أخرى لطباعة الرسالة.
  • Code خط 20: إنشاء سلسلة جديدة لطباعة رسالة.
  • Code خط 21: طباعة رسالة جديدة تم إنشاؤها في السطر 20.

لنقم بإنشاء فئة اختبار لفئة Java أعلاه للتحقق من الاستثناء.

انظر أدناه استثناء اختبار الفئة لاختبار الوحدة (ArithmeticException هنا) الذي تم طرحه من فئة Java أعلاه:

AirthematicTest.java

AirthematicTest.Java

package guru99.junit;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class AirthematicTest {

	public String message = "Saurabh";
	
	JUnitMessage junitMessage = new JUnitMessage(message);
	
	@Test(expected = ArithmeticException.class)
	public void testJUnitMessage(){

		System.out.println("Junit Message is printing ");
		junitMessage.printMessage();

	}

	@Test
	public void testJUnitHiMessage(){ 
		message="Hi!" + message;
		System.out.println("Junit Message is printing ");
		assertEquals(message, junitMessage.printMessage());
	
	}
}

Code التفسير:

  • Code خط 13: استخدام شرح @Test لإنشاء الاختبار. عند تنفيذ طريقة الفئات أعلاه، سيتم استدعاء عملية حسابية. هنا من المتوقع حدوث استثناء حسابي، لذا فأنت تقوم بإدراجه كمعلمة في @Test.
  • Code خط 17: استدعاء printMessage() JUnitرسالة.جافا
  • Code خط 18: إنشاء طريقة أخرى لطباعة رسالة HI.

إذا قمت بتنفيذ فئة الاختبار هذه، فسيتم تنفيذ طريقة الاختبار مع كل معلمة محددة. في المثال أعلاه، يتم تنفيذ طريقة الاختبار خمس مرات.

فلننفذها ونتحقق من النتيجة. انظر أدناه فئة عداء الاختبار للتنفيذ مثال على اختبار Junit.java

الإخراج:

هذه هي النتيجة التي تُظهر نجاح الاختبار دون أي فشل. trace كما هو موضح أدناه:

AirthematicTest.Java الناتج

ملخص

  • اختبار الاستثناء هو ميزة خاصة تم تقديمها في JUnit4. تعلمت في هذا البرنامج التعليمي كيفية اختبار الاستثناء في JUnit باستخدام @test(مستثنى)
  • يوفر نظام JUnit إمكانية tracقم بفحص الاستثناء، وكذلك للتحقق مما إذا كان الكود يطرح استثناءً أم لا.
  • لاختبار الاستثناء، يمكنك استخدام
    • المعلمة الاختيارية (المتوقعة) للتعليق التوضيحي @test و
    • إلى tracيمكن استخدام المعلومات "fail()"

تلخيص هذه التدوينة بـ: