Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() دليل سريع حول كيفية تشغيل الحاويات من الاختبارات - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2022-08-16
تطوير البرمجيات

دليل سريع حول كيفية تشغيل الحاويات من الاختبارات

بارتلوميج كوتشينسكي

تعرّف على كيفية تشغيل اختبارات نموذج الحاويات في مقالنا المتعلق بـ Java حيث يعرض مطور جافا الأقدم لدينا كل السحر.

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

أستخدم الإصدار 1.17.3 من Testcontainers، ولكن لا تتردد في استخدام الإصدار الأحدث. اختبارات مع حاوية Postgres.

عرّف الحاوية أولاً:

فئة عامة Postgres13TC فئة PostgreSQLContainer {
  فئة Postgres13TC خاصة ثابتة ونهائية Postgres13TC TC = Postgres13TC() جديدة Postgres13TC();

  خاص Postgres13TC() {) {
    ممتاز("postgres:13.2");
  }

  عمومي ثابت Postgres13TC getInstance() {{
    إرجاع TC;
  }

  @Overrride
  عام باطل بدء عام() { {
    super.start();
    System.setProperty("DB_URL", TC.getJdbcUrl());
    System.setProperty("DB_USERNAME"، TC.getUsername())؛
    System.setProperty("DB_PASSWORD"، TC.getPassword())؛
  }

  @Overrride
  إيقاف عام باطل() {{.
    // لا تفعل شيئًا. هذا مثيل مشترك. دع JVM يتعامل مع هذه العملية.
  }
}

ثم نقوم بتهيئة سياق تطبيق Spring. نحصل على جميع تكوينات مصدر البيانات من مثيل الحاوية ونقوم بتعيينها كتكوين الربيع:

تُنفذ الفئة العامة ContainerInit فئة ContainerInit تنفيذ ApplicationContextInitializer {

  عام ثابت Postgres13TC postgres13TC;

  ثابت {
    postgres13TC = Postgres13TC.getInstance();
    postgres13TC.start();
  }

  @Overrride
  العمومية تهيئة باطلة عامة(ConfigurableApplicationContext applicationContext) { {
    TestPropertySourceUtils.addInlinePropertiesToEnvironment(
        applicationContext,
        "spring.datasource.url=" + postgres13TC.getJdbcUrl(),
        "spring.datasource.username=" + postgres13TC.getUsername(),
        "spring.datasource.password=" + postgres13TC.getPassword(),
        "db.host=" + + postgres13TC.getHost(),
        "db.port=" + + postgres13TC.getMappingPort(postgres13TC.POSTGRESQL_PORT),
        "db.name=" + postgres13TC.getDatabaseName(),
        "db.username=" + postgres13TC.getUsername(),
        "db.password=" + postgres13TC.getPassword()
    );
  }
}

وأخيراً، يمكننا تشغيل الاختبار، وسيبدأ كل شيء تحت الغطاء:

@SpringBootTest(webEnvironment = RANDOM_PORT)
@AutoConfigureTestDatabase(استبدال = NONE)
@ContextConfiguration(المُهيئات = ContainerInit.class)
@اختبار الحاويات
صنف DummyRepositoryTest {

  @التلقائي
  خاص DummyRepository dummyRepository;

  @ اختبار
  باطل shouldReturnDummy() { {
    var byId = dummyRepository.getById(10L);
    متغير متوقع = دمية جديدة();
    المتوقع.setId(10L);
    تأكيد أن (byId).يكمل().emitsCount(1).emitsCount(متوقع);
  }
}

أو إذا أردنا إجراء اختبار الربيع المستقل، يمكننا استخدام الحاوية مباشرةً:

@ حاويات الاختبار
صنف SimpleDbTest {

  @حاوية
  خاص نهائي ثابت Postgres13TC postgres13TC = Postgres13TC.getInstance();

  @ اختبار
  باطل testConnection() { {
    افترض أن (postgres13TC.isRunning());
    var connectionProps = خصائص جديدة();
    connectionProps.put("المستخدم"، postgres13TC.getUsername());
    connectProps.put("كلمة المرور"، postgres13TC.getPassword())؛
    محاولة (محاولة (اتصال اتصال اتصال = DriverManager.getConnection(postgres13TC.getJdbcUrl(),
        connectProps)) {
    var resultSet = connection.prepareStatement("حدد 1").executeQuery();
    resultSet.next();
    تأكيد أن(resultSet.getInt(1)).isEqualTo(1);
    } التقاط (استثناء SQLEXception sqlException) {
    تأكيد أن((استثناء) استثناء sqlException).doesNotThrowAnyException();
    }
  }
}

خلاصة القول

أدوات Testcontainers هي أدوات سهلة الاستخدام للغاية تساعدنا على إنشاء اختبارات التكامل التي تستخدم حاويات Docker. وهذا يمنحنا المزيد من المرونة ويزيد من سرعة التطوير. يقلل الإعداد الصحيح لتهيئة الاختبار من الوقت اللازم للمطورين الجدد. فهم لا يحتاجون إلى إعداد جميع التبعيات، فقط تشغيل الاختبارات المكتوبة بملفات التكوين المحددة.

راية التعاون

مقالات ذات صلة

تطوير البرمجيات

9 أخطاء يجب تجنبها أثناء البرمجة بلغة جافا

ما الأخطاء التي يجب تجنبها أثناء البرمجة بلغة جافا؟ في المقالة التالية نجيب على هذا السؤال.

The Codest
رافال ساويكي مطور جافا
الحلول المؤسسية وحلول التوسعة

كيف يمكن ل Java دعم أعمالك التجارية؟

قبل أن نبدأ، أود أن أذكركم بأمر مهم. جافا ليست لغة برمجة فقط.

بارتلوميج كوتشينسكي
الحلول المؤسسية وحلول التوسعة

الطريقة الصحيحة للعثور على أفضل مطوري جافا

قد يكون العثور على مطور جافا المثالي مهمة شاقة. فمع نمو الطلب في السوق على هؤلاء المهنيين بوتيرة مذهلة، قد تبدو المصادر المتاحة للبحث عن المواهب في بعض الأحيان...

The Codest
غريغورز روزموس قائد وحدة جافا

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic