DbUnit كيفية حماية ضد اختبارات متعددة تعمل في نفس الوقت؟

StackOverflow https://stackoverflow.com/questions/1203758

سؤال

وأنا أعمل على بيئة اختبار للمشروع، وأتطلع إلى استخدام DbUnit.NET إلى القيام بالكثير من اختبار تفاعل قاعدة البيانات. لدي سؤال واحد كبير جدا على الرغم من:

ونحن ادارة ضد أوراكل، وإنشاء مثيل اختبار DB منفصلة لكل مطور في الحقيقة ليست مجدية (خصوصا لأن لدينا سوى 1 DBA الذي تفتقر بالفعل للمرة). وهذا يعني أن جميع المطورين وخارج الخادم التكامل المستمر جميعا بحاجة إلى استخدام نفس المخطط DB.

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

وأية أفكار أخرى؟ ويبدو ان الامر ينبغي أن يكون مسألة شائعة جدا ... أو ماذا الجميع يعمل في الواقع حالات DB منفصلة لكل مطور / اختبار قد تشغيل الاختبارات؟

هل كانت مفيدة؟

المحلول

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

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

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

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

نصائح أخرى

ويمكنك استخدام [TestFixtureSetUp] سمة لحقن العلم الخاص بك الذي يشير إلى أن الاختبارات تعمل كوسيلة لمحاكاة "الحقيقية" الإشارة.

وشيء فعلته في مشكلة مع بعض أوجه التشابه مع هذا واحد:

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top