البرمجة

تجنب تشغيل المهام المجدولة أثناء اختبارات الوحدات

عند تطوير تطبيق Spring Boot باستخدام Maven، قد تواجه تحديات في تنظيم تشغيل المهام المجدولة خلال اختبارات الوحدات. عندما تقوم بتشغيل اختبار وحدة معينة، قد ترغب في تجنب تنفيذ المهام المجدولة التي تم تحديدها في تطبيقك، والتي تعمل بانتظام وفقاً للجدول الزمني المحدد. لحل هذه المشكلة، يمكنك اتباع عدة خطوات.

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

لتحقيق ذلك، يمكنك إنشاء ملف تكوين خاص بالاختبارات (مثل application-test.properties) وتعيين خاصية spring.task.scheduling.enabled إلى false. هذا سيعطل التشغيل التلقائي للمهام المجدولة أثناء تشغيل الاختبارات.

properties
spring.task.scheduling.enabled=false

ثانياً، يمكنك اختبار مكون المهام المجدولة بشكل منفصل باستخدام مكتبة مثل @MockBean من Spring Boot. باستخدام هذه المكتبة، يمكنك استبدال مكون المهام المجدولة الفعلي بوهم لا يفعل شيئاً أثناء تشغيل الاختبارات.

java
@RunWith(SpringRunner.class) @SpringBootTest public class BankitCrawlerTests { @MockBean private YourScheduledTaskComponent scheduledTaskComponent; // Your tests go here }

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

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

بالطبع، فهيا نواصل تطوير فكرة الحلول الممكنة لهذه المشكلة.

ثالثًا، يمكنك استخدام تكوينات مختلفة للتطبيق أثناء التشغيل العادي مقارنة بأثناء تشغيل الاختبارات. يمكنك إنشاء ملفات تكوين مستقلة لكل حالة: واحدة للتشغيل العادي (مثل application.properties) وواحدة أخرى للاختبارات (مثل application-test.properties). في ملف تكوين الاختبارات، يمكنك تعطيل التخطيط كما سبق، وفي ملف التكوين العادي، يمكنك ترك التخطيط مفعلاً.

properties
# application.properties spring.task.scheduling.enabled=true
properties
# application-test.properties spring.task.scheduling.enabled=false

رابعًا، إذا كانت المهمة المجدولة تعتمد على خدمات أو مكونات أخرى، فيمكنك استخدام الاختبارات الوهمية (Mockito أو EasyMock مثلًا) لإنشاء نسخ وهمية من هذه الخدمات والمكونات. هذا يسمح لك بتشغيل الاختبارات دون الحاجة إلى تشغيل المهام الفعلية.

خامسًا، قد ترغب في إعادة تنظيم الترتيب الخاص بالتجارب لتفادي تنفيذ المهام المجدولة في الأصل. يمكنك تجميع الاختبارات ذات الصلة في مجموعات مختلفة وتشغيل المهام المجدولة في الاختبارات الرئيسية فقط.

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

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

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

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

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