Skip to content

Files

Latest commit

 

History

History

arrange-act-assert

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
title shortTitle category language tag
Arrange/Act/Assert
Arrange/Act/Assert
Idiom
ar
Testing

أيضا معروف بـ

Dado/Cuando/Entonces

الغرض

Arrange/Act/Assert (AAA) هو نمط لتنظيم اختبارات الوحدة. يقسم اختبارات الوحدة إلى ثلاث خطوات واضحة ومميزة:

  1. Arrange(تنظيم): قم بإعداد التهيئة والتهيئة اللازمة للاختبار.
  2. Act(العمل): اتخذ التدابير اللازمة للاختبار.
  3. 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 عندما

  • تحتاج إلى تنظيم اختبارات الوحدة الخاصة بك لتكون أسهل في القراءة والصيانة والتحسين.

الشكر