"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اختبار متقدم مع JUnit 5

اختبار متقدم مع JUnit 5

تم النشر بتاريخ 2024-08-07
تصفح:505

Advanced Testing with JUnit 5

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

ما هي الوحدة 5؟

يعد JUnit 5 تحديثًا رئيسيًا لإطار عمل JUnit، وهو مصمم ليكون أكثر مرونة ونمطية. وهو يتألف من ثلاثة مكونات رئيسية:

  1. منصة JUnit: الأساس لإطلاق أطر الاختبار على JVM.
  2. JUnit Jupiter: نموذج البرمجة الجديد والنموذج الإرشادي لكتابة الاختبارات.
  3. JUnit Vintage: يوفر الدعم لتشغيل اختبارات JUnit 3 وJUnit 4 على منصة JUnit 5.

الميزات الرئيسية للوحدة 5

  1. أسماء العرض: قم بإضافة تعليقات توضيحية للاختبارات بأسماء عرض مخصصة لتسهيل القراءة.
  2. الاختبارات المتداخلة: تنظيم الاختبارات بشكل هرمي لتعكس بنية الكود الذي تم اختباره.
  3. الاختبارات الديناميكية: إنشاء الاختبارات ديناميكيًا في وقت التشغيل.
  4. وضع العلامات والتصفية: قم بتجميع الاختبارات باستخدام العلامات وتصفيتها أثناء التنفيذ.
  5. التأكيدات والافتراضات: دعم محسّن للتأكيدات والافتراضات للتحكم في تدفق تنفيذ الاختبار.

مثال: استخدام الميزات المتقدمة لـ JUnit 5

  1. أسماء العرض المخصصة:
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

@DisplayName("Calculator Tests")
class CalculatorTest {

    @Test
    @DisplayName("Addition Test")
    void testAddition() {
        assertEquals(2, 1   1, "1   1 should equal 2");
    }
}
  1. الاختبارات المتداخلة:
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

class OuterTest {

    @Nested
    class InnerTest {
        @Test
        void innerTest() {
            // Test logic here
        }
    }
}
  1. الاختبارات الديناميكية:
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.DynamicTest.dynamicTest;

class DynamicTestsDemo {

    @TestFactory
    Stream dynamicTests() {
        return Stream.of(1, 2, 3, 4, 5)
                .map(number -> dynamicTest("Test number "   number, () -> assertTrue(number > 0)));
    }
}
  1. وضع العلامات والتصفية:
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

class TaggingTest {

    @Test
    @Tag("fast")
    void fastTest() {
        // Fast test logic here
    }

    @Test
    @Tag("slow")
    void slowTest() {
        // Slow test logic here
    }
}
  1. التأكيدات والافتراضات:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assumptions.assumeTrue;

class AssertionsDemo {

    @Test
    void testException() {
        assertThrows(IllegalArgumentException.class, () -> {
            throw new IllegalArgumentException("Exception message");
        });
    }

    @Test
    void testAssumption() {
        assumeTrue(5 > 1);
        // Test logic here
    }
}

خاتمة

تقدم JUnit 5 مجموعة كبيرة من الميزات والتحسينات الجديدة التي تجعلها أداة قوية لاختبار Java الحديث. ومن خلال الاستفادة من هذه الإمكانات المتقدمة، يمكنك إنشاء مجموعات اختبار أكثر تنظيمًا ومرونة وقابلة للصيانة، مما يضمن قوة وموثوقية التعليمات البرمجية الخاصة بك.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/adaumircosta/advanced-testing-with-junit-5-1nh؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3