البرمجة

كيفية تعطيل FlywayAutoConfiguration في اختبارات DataJpaTest

عند استخدام تجارب الاختبار DataJpaTest في Spring Boot، يتم تكوين التطبيق التلقائي لتشغيل Flyway مما يمكن أن يؤدي إلى تنفيذ السكربتات SQL الموجودة في مشروعك، وهو ما قد لا يكون مطلوبًا في بيئة الاختبار حيث يمكن أن يتم استبدالها بطرق أخرى.

لحل هذه المشكلة واستبعاد تكوين FlywayAutoConfiguration خلال اختبارات DataJpaTest، يمكنك اتباع الخطوات التالية:

  1. قم بإنشاء تكوين مخصص CustomTestConfiguration لإلغاء تكوين FlywayAutoConfiguration:
java
import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; @TestConfiguration @Import(DataJpaTestExcludeFlywayConfiguration.class) public class CustomTestConfiguration { } @TestConfiguration class DataJpaTestExcludeFlywayConfiguration { @Bean public FlywayAutoConfiguration flywayAutoConfiguration() { return new FlywayAutoConfiguration(); } }
  1. قم بتضمين CustomTestConfiguration في اختبارك:
java
@RunWith(SpringRunner.class) @DataJpaTest @Import(CustomTestConfiguration.class) public class MyRepositoryTest { // أضف متغيرات الاختبار هنا }

بهذا الشكل، سيتم استبعاد FlywayAutoConfiguration أثناء تشغيل اختباراتك DataJpaTest، وسيتمكن Hibernate من إنشاء الجداول في قاعدة البيانات H2 بدلاً من قراءة السكربتات SQL الموجودة.

المزيد من المعلومات

  1. لضمان عملية الاختبار السلسة، يمكنك تحديد قاعدة بيانات مخصصة للاختبارات بدلاً من استخدام القاعدة في الذاكرة الافتراضية. يمكنك تحقيق ذلك من خلال تكوين إعدادات القاعدة الخاصة بالاختبارات.
java
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.ActiveProfiles; @RunWith(SpringRunner.class) @DataJpaTest @ActiveProfiles("test") @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @Import(CustomTestConfiguration.class) public class MyRepositoryTest { // أضف متغيرات الاختبار هنا }
  1. قم بإنشاء ملف التكوين application-test.properties في المسار src/test/resources لتحديد إعدادات القاعدة البيانات الخاصة بالاختبارات:
properties
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.hibernate.ddl-auto=create
  1. الآن، يمكنك تشغيل اختباراتك DataJpaTest بثقة دون أن تؤثر عمليات Flyway في تنفيذ السكربتات SQL.

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

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

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر