title | shortTitle | category | language | tag | |
---|---|---|---|---|---|
Arrange/Act/Assert |
Arrange/Act/Assert |
Idiom |
ar |
|
Dado/Cuando/Entonces
Arrange/Act/Assert (AAA) هو نمط لتنظيم اختبارات الوحدة. يقسم اختبارات الوحدة إلى ثلاث خطوات واضحة ومميزة:
- Arrange(تنظيم): قم بإعداد التهيئة والتهيئة اللازمة للاختبار.
- Act(العمل): اتخذ التدابير اللازمة للاختبار.
- Assert(التأكيد): تحقق من نتائج الاختبار.
لهذا النمط العديد من الفوائد الكبيرة. فهو يخلق فصلًا واضحًا بين إعدادات الاختبار، العمليات والنتائج. هذا الهيكل يجعل الكود أسهل في القراءة والفهم. إذا وضعت الخطوات بالترتيب وصيغت الكود بطريقة تفصلها، يمكنك مسح الاختبار وفهمه بسرعة.
كما أنه يفرض درجة معينة من الانضباط عند كتابة اختبارات الوحدة. يجب أن تكون قادرًا على تصور بوضوح الخطوات الثلاث التي سيقوم بها اختبارك. هذا يجعل الاختبارات أكثر بديهية للكتابة مع الحفاظ على هيكل واضح.
مثال يومي
نحتاج إلى كتابة مجموعة من اختبارات الوحدة كاملة وواضحة لفئة.
بعبارة أخرى
Arrange/Act/Assert هو نمط اختبار ينظم الاختبارات إلى ثلاث خطوات واضحة لتسهيل الصيانة.
WikiWikiWeb يقول
Arrange/Act/Assert هو نمط لتنظيم وتنسيق الكود في طرق اختبار الوحدة.
كود المثال
لنلقِ نظرة أولاً على فئتنا Cash
التي سيتم اختبارها.
public class Cash {
private int amount;
Cash(int amount) {
this.amount = amount;
}
void plus(int addend) {
amount += addend;
}
boolean minus(int subtrahend) {
if (amount >= subtrahend) {
amount -= subtrahend;
return true;
} else {
return false;
}
}
int count() {
return amount;
}
}
ثم نكتب اختبارات الوحدة الخاصة بنا بناءً على نمط Arrange/Act/Assert. لاحظ بوضوح الفصل بين الخطوات لكل اختبار وحدة.
class CashAAATest {
@Test
void testPlus() {
//Arrange
var cash = new Cash(3);
//Act
cash.plus(4);
//Assert
assertEquals(7, cash.count());
}
@Test
void testMinus() {
//Arrange
var cash = new Cash(8);
//Act
var result = cash.minus(5);
//Assert
assertTrue(result);
assertEquals(3, cash.count());
}
@Test
void testInsufficientMinus() {
//Arrange
var cash = new Cash(1);
//Act
var result = cash.minus(6);
//Assert
assertFalse(result);
assertEquals(1, cash.count());
}
@Test
void testUpdate() {
//Arrange
var cash = new Cash(5);
//Act
cash.plus(6);
var result = cash.minus(3);
//Assert
assertTrue(result);
assertEquals(8, cash.count());
}
}
استخدم نمط Arrange/Act/Assert عندما
- تحتاج إلى تنظيم اختبارات الوحدة الخاصة بك لتكون أسهل في القراءة والصيانة والتحسين.