Junit Assert & AssertEquals مع مثال
⚡ ملخص ذكي
JUnit تُحدد الدالتان Assert و AssertEquals حالة نجاح أو فشل حالة الاختبار من خلال مقارنة القيم المتوقعة بالقيم الفعلية. يشرح هذا المورد دوال التأكيد التي توفرها مكتبة org.junit.Assert، بما في ذلك تأكيدات القيم المنطقية، والقيم الفارغة، والهوية، والمساواة، والمصفوفات، مع مثال عملي كامل.

ما هو Junit Assert؟
تُعدّ دالة Assert طريقةً مفيدةً لتحديد حالة نجاح أو فشل حالة اختبار. وتُوفّر هذه الدوال بواسطة الفئة org.junit.Assert، التي ترث من الفئة java.lang.Object.
توجد أنواع مختلفة من التأكيدات، مثل التأكيدات المنطقية، والتأكيدات الفارغة، والتأكيدات المتطابقة، وما إلى ذلك.
JUnit يوفر فئة تسمى Assert، والتي توفر مجموعة من أساليب التأكيد المفيدة في كتابة حالات الاختبار واكتشاف حالات فشل الاختبار.
يتم توفير أساليب التأكيد من قبل الفصل org.junit.تأكيد، مما يوسع نطاق java.lang.Object فئة.
JUnit تأكيد الأساليب
منطقية
إذا كنت ترغب في اختبار الشروط المنطقية (صواب أو خطأ)، يمكنك استخدام طرق التأكيد التالية:
- تأكيد صحيح (شرط)
- تأكيد خطأ (شرط)
هنا الشرط هو قيمة منطقية.
كائن فارغ
إذا كنت تريد التحقق من القيمة الأولية لكائن/متغير، فلديك الطرق التالية:
- تأكيدNull(كائن)
- تأكيدNotNull(كائن)
الكائن هنا هو Java موضوع، على سبيل المثال AssureNull(actual);
مطابق
إذا كنت ترغب في التحقق مما إذا كانت الكائنات متطابقة (أي مقارنة مرجعين لنفس الشيء) Java كائن) أو مختلف:
- assertSame(expected, actual) — ستُرجع القيمة "صحيح" إذا المتوقع == الفعلي.
- AssuredNotSame (متوقع، فعلي)
تأكيد يساوي
إذا كنت ترغب في اختبار تساوي كائنين، فلديك الطريقة التالية:
- التأكيد على المساواة (المتوقع، الفعلي)
سيعود صحيحا إذا المتوقع يساوي (الفعلي) إرجاع صحيح.
تأكيد صفيف يساوي
إذا كنت ترغب في اختبار تساوي المصفوفات، فلديك الطريقة التالية:
- تأكيدArrayEquals(المتوقع، الفعلي)
يجب استخدام الطريقة المذكورة أعلاه إذا كانت المصفوفات لها نفس الطول. لكل قيمة صالحة لـ i، يمكنك التحقق من ذلك كما هو موضح أدناه:
- assertEquals(expected[i], actual[i])
- assertArrayEquals(expected[i], actual[i])
رسالة فشل
إذا كنت تريد رمي أي خطأ في التأكيد، لديك يفشل()، وهو ما يؤدي دائماً إلى نتيجة سلبية.
- فشل (الرسالة)؛
يمكنك استخدام طريقة تأكيد مع إضافة خيط المعامل الأول. ستُضاف هذه السلسلة إلى رسالة الخطأ في حال فشل التأكيد. على سبيل المثال، فشل (رسالة) يمكن كتابتها على النحو التالي:
- assertEquals(message, expected, actual)
JUnit أكد
لديك assertEquals(a, b)، والذي يعتمد على يساوي () طريقة فئة الكائن.
- هنا سيتم تقييمه أ. يساوي (ب).
- هنا يتم استخدام الفصل قيد الاختبار لتحديد علاقة المساواة المناسبة.
- إذا لم يتجاوز الفصل يساوي () طريقة هدف سيحصل هذا الصنف على السلوك الافتراضي لـ يساوي () الطريقة، أي هوية الكائن.
If a و b هي البدائيات مثل بايت, مادبا, منطقيةإلخ، ثم سيتم تنفيذ ما يلي لـ assertEquals(a, b):
a و b سيتم تحويله إلى نوع كائن المجمع المكافئ (بايت، عدد صحيح، قيمة منطقيةالخ)، وبعد ذلك أ. يساوي (ب) سيتم تقييمها.
على سبيل المثال، لنفترض أن السلاسل النصية المذكورة أدناه لها نفس القيم؛ دعونا نختبر ذلك باستخدام assertEquals:
String obj1 = "Junit"; String obj2 = "Junit"; assertEquals(obj1, obj2);
ستُرجع عبارة التأكيد أعلاه القيمة "صحيح" لأن obj1.equals(obj2) تُرجع القيمة "صحيح".
تأكيدات النقطة العائمة
عندما تريد مقارنة أنواع البيانات ذات الفاصلة العائمة (مثلًا، مضاعفة or الطفوأنت بحاجة إلى مُعامل إضافي مطلوب، دلتا، لتجنب مشاكل أخطاء التقريب أثناء إجراء مقارنات الفاصلة العائمة.
يتم تقييم التأكيد على النحو المبين أدناه:
- Math.abs(expected – actual) <= delta
فمثلا:
assertEquals(aDoubleالقيمة، أخرىDoubleالقيمة، 0.001)
JUnit تأكيد المثال
يوضح المثال التالي كيفية التحقق من شرط باستخدام JUnit تأكيد الأساليب.
لنقم بإنشاء فئة اختبار بسيطة باسم برنامج Junit4AssertionTest.java وفئة عداء الاختبار TestRunner.java.
ستقوم بإنشاء بعض المتغيرات وعبارات التأكيد المهمة في JUnit.
في هذا المثال، ستقوم بتنفيذ فئة الاختبار الخاصة بنا باستخدام TestRunner.java.
الخطوة 1) لنقم بإنشاء فئة تغطي جميع طرق عبارات التأكيد المهمة في JUnit:
برنامج Junit4AssertionTest.java
package guru99.junit; import static org.junit.Assert.*; import org.junit.Test; public class Junit4AssertionTest { @Test public void testAssert() { // Variable declaration String string1 = "Junit"; String string2 = "Junit"; String string3 = "test"; String string4 = "test"; String string5 = null; int variable1 = 1; int variable2 = 2; int[] airethematicArrary1 = { 1, 2, 3 }; int[] airethematicArrary2 = { 1, 2, 3 }; // Assert statements assertEquals(string1, string2); assertSame(string3, string4); assertNotSame(string1, string3); assertNotNull(string1); assertNull(string5); assertTrue(variable1 < variable2); assertArrayEquals(airethematicArrary1, airethematicArrary2); } }
الخطوة 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(Junit4AssertionTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result==" + result.wasSuccessful()); } }
الخطوة 3) لنحلل الناتج المتوقع خطوة بخطوة. لننظر في جميع عبارات التأكيد واحدة تلو الأخرى:
- assertEquals(string1, string2);
الآن، قارن السلسلة الأولى (string1=”Junit”) مع السلسلة الثانية (string2=”Junit”) باستخدام دالة equals الخاصة بفئة Object. استبدل دالة assertEquals بدالة java.lang.Object.equals().
string1.equals(string2) => تُرجع القيمة true
لذا فإن assertEquals(string1, string2) ستُرجع صحيح.
- تأكيدSame(string3, string4);
تُستخدم الدالة `assertSame()` للتحقق من أن الكائنين يشيران إلى نفس الكائن. بما أن `string3` و`string4` من النوع نفسه، فإن `assertSame(string3, string4)` ستُرجع قيمة منطقية `true`. صحيح.
- AssureNotSame(string1, string3);
تتمثل وظيفة "assertNotSame()" في التحقق من أن الكائنين لا يشيران إلى نفس الكائن. بما أن string1=”Junit” و string3=”test”، فإن كلاً من string1 و string3 من نوعين مختلفين، لذا فإن assertNotSame(string1, string3) ستُرجع قيمة خاطئة. صحيح.
- AssureNotNull(string1);
تتمثل وظيفة "assertNotNull()" في التحقق من أن الكائن ليس فارغًا (null). وبما أن string1 = "Junit"، وهي قيمة غير فارغة، فإن assertNotNull(string1) ستُرجع قيمة فارغة. صحيح.
- تأكيدNull(string5);
تُستخدم الدالة "assertNull()" للتحقق من أن الكائن يساوي قيمة فارغة (null). وبما أن string5 = null، وهي قيمة فارغة، فإن assertNull(string5) ستُرجع قيمة فارغة. صحيح.
- assertTrue(variable1 < variableable2);
تُستخدم الدالة "assertTrue()" للتحقق من صحة شرط معين. بما أن المتغير الأول يساوي 1 والمتغير الثاني يساوي 2، مما يدل على أن الشرط "المتغير الأول < المتغير الثاني" صحيح، فإن الدالة assertTrue(المتغير الأول < المتغير الثاني) ستُرجع قيمة صحيحة. صحيح.
- AssurerArrayEquals(airethematicArrary1, airethematicArrary2);
تُستخدم الدالة `assertArrayEquals()` للتحقق من تساوي المصفوفة المتوقعة مع المصفوفة الناتجة. قد يكون نوع المصفوفة `int` أو `long` أو `short` أو `char` أو `byte` أو `java.lang.Object`. بما أن `airethematicArrary1 = { 1, 2, 3 }` و`airethematicArrary2 = { 1, 2, 3 }`، مما يدل على تساوي المصفوفتين، فإن `assertArrayEquals(airethematicArrary1, airethematicArrary2)` ستُرجع `true`. صحيح.
بما أن جميع عبارات التأكيد السبعة لـ برنامج Junit4AssertionTest.java عند تنفيذ فئة الاختبار assert، فإنها ستعيد نتيجة اختبار ناجحة (انظر المخرجات أدناه).
الخطوة 4) انقر بزر الماوس الأيمن على ملف Junit4AssertionTest.java ثم انقر على تشغيل كـ JUnit. سترى الإخراج كما هو موضح أدناه:
تُظهر المخرجات أعلاه نتيجة اختبار ناجحة كما هو متوقع.




