ncrunch جميع اختبار تمرير التشغيل أولا، ولكن يفشل بعد تغيير الرمز وعند تشغيل الزر تشغيل جميع

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

  •  12-12-2019
  •  | 
  •  

سؤال

أنا أقوم بتشغيل ncrunch، في حل MVC 4 جديد في VS2012 باستخدام NUNIT و Ninject.

عندما أفتح الحل أولا كل 50 أو نحو ذلك اختبار التشغيل والتمرير بنجاح.

بعد إجراء أي تغيير رمز (حتى مجرد مساحة فارغة إضافية) تقارير ncrunch التي تفشل معظم اختبار وحدتي. يحدث نفس الشيء إذا ضغطت على "تشغيل جميع الاختبارات" في نافذة NCrunch.

ولكن إذا قمت بالضغط على "تشغيل جميع الاختبارات مرئية هنا" الزر 50 اختبار التصدير مرة أخرى وتقارير NCrunch كل شيء على ما يرام.

أيضا عند تشغيل كل اختبار بشكل فردي يمر في كل مرة.

عندما يفشلون، يبدو أنهم يفشلون في رمز إعداد Ninject الخاص بي

خطأ: فشل TestFiTTuresetup في ControldestSetup giveacodicetagpre.

يعمل كل الاختبار أيضا في RESHHARPER اختبار عداء دون مشاكل في كل مرة.

هل يعرف أحد ما يمكن أن يسبب هذا؟

أظن أنه شيء له علاقة به رمز قفل Singleton داخل خاصية المثيل ولكنني لست متأكدا.

==============================================================================. التقدم:

كنت قادرا على تتبع هذا إلى خطأ في طريقة إعداد Ninject أعلاه عن طريق التفاف في عبارة TRY CATCH، وكتابة الخطأ إلى نافذة الإخراج.

كان الاستثناء ناتج عن محاولة تحميل وحدة نمطية أكثر من مرة، حتى، حتى أنا بالتأكيد لم أكن وأنا لا أستخدم أي نوع من تحميل الوحدات النمطية التلقائية.

يحدث هذا على الأسطر giveacodicetagpre.

حيث يكون LocalFessionSoryModule هو فئة الوحدة النظارية المتظيرة المستمدة لفئة NinjectModule.

لماذا يحدث هذا فقط مع NCrunch وما الذي يمكنني فعله لحل هذه المشكلة؟ هل هناك طريقة للتحقق مما إذا تم تحميل وحدة نمطية بالفعل؟

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

المحلول

لن يتم تنفيذ

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

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

هذا يعني أنه من المؤكد أن المشكلة مرتبطة بالتأكيد بالتسلسل الذي يتم فيه تنفيذ الاختبارات. سيتم تشغيل جميع متسابق الاختبار اليدوي تقريبا (بما في ذلك RESHRAPER) الاختبارات في تسلسل محدد من البداية إلى النهاية. هذا جيد للاتساق، ولكنه يمكن أن يخفي المشاكل التي قد تكون السطح عند تشغيل الاختبارات في ترتيب عشوائي غير متسق. ستقوم NCrunch بتنفيذ الاختبارات بترتيب الأولوية ويمكن أيضا إعادة استخدام عمليات الاختبار بين عمليات الاختبار، والتي يمكن أن تجعل سلوك وقت التشغيل من اختباراتك مختلفة إذا لم تكن مصممة بهذا في الاعتبار.

طريقة مفيدة للسطح (وبالتالي تصحيح) التسلسل المشكلات المتعلقة بالتسلسل هي محاولة تشغيل الاختبارات الخاصة بك في ترتيب محدد يدويا باستخدام NCrunch. إذا قمت بالنقر بزر الماوس الأيمن فوق اختبار داخل نافذة اختبارات NCrunch، ضمن القائمة "Advanced"، ستجد خيارا لتشغيل اختبار باستخدام عملية عداء مهمة موجودة. جرب هذا الإجراء ضد العديد من الاختبارات الخاصة بك لمعرفة ما إذا كان يمكنك إعادة إنتاج التسلسل الذي يتولى المشكلة. عندما يحدث ذلك، يجب عليك بسهولة أن تكون قادرا على الحصول على مصحح أخطاء في الاختبار ومعرفة سبب فشله.

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

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