الحصول على إحصائيات تغطية اختبار Dunit باستخدام FinalBuilder و AQTIME

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

سؤال

لدينا مشروع Delphi كبير (1.5 مليون سطر من التعليمات البرمجية) ، وننتقل إلى استخدام العمليات الرشيقة.

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

أنا أستخدم مهمة "تنفيذ برنامج" لتشغيل وحدة اختبار القابلة للتنفيذ ، وتسجيل النتائج وحوض الملف بعد ذلك. أنوي استخدام مهمة "Run Script" لتشغيل AQTime (عبر COM) وتصدير النتائج إلى XML حتى أتمكن من تحليل هذه النتائج.

المشكلة التي لدي هي مع AQTime تشغيل اختبار الوحدة القابلة للتنفيذ ، أفقد القدرة على مراقبة اختبار الوحدة القابلة للتنفيذ مباشرة. أرغب في الحصول على FinalBuilder لتحليل نتائج كلتا المهمتين. هل يعرف أي شخص كيفية الوصول إلى نتائج Dunit عندما يتم استدعاؤه من AQTime؟

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

المحلول

ركضنا هذا المسار نفسه ، ونحن لا نجري اختبار Dunit من AQTIME ،

بدلاً من ذلك ، نقوم ببناء وتشغيل اختبارات Dunit الخاصة بنا باستخدام FinalBuilder.

تستخدم اختبارات الوحدة الخاصة بنا XMLTestrunner ، ثم يمكننا معرفة ما إذا كان الاختبار فشل أو لا يستخدم بسهولة شديدة باستخدام استعلام XPATH على ملف XML الناتج.

تحديث: التحديث الأخير لـ FinalBuilder 7.0 يدعم الآن Dunit. إنه من خلال xmltestrunner.pas الخاص به ، والذي يقع تحت دليل FinalBuilder بعد التثبيت. هذا العداء يخرج الاختبار يؤدي إلى نفس تنسيق NUNIT. ثم يدمج جيدًا في خادم FinalBuilder.

نصائح أخرى

أنت نوع من وصف الإعداد الذي نطوره ببطء.

  • يتم تجميع اختبارات Dunit كتطبيقات وحدة التحكم باستخدام ttextTestListener محددة في وحدة TextTeStrunner.
  • CI Server هو برنامج نصي CMD يقوم بإنشاء جميع المشاريع وينفذ جميع الاختبارات.
  • يتم إخراج الاختبارات إلى ملف.

حل قد يكون لديك ملف تعريف AQTIME هذه تطبيقات وحدة التحكم في حين لا تزال قادرة على تنشيط النتائج إلى ملف يمكن تحليله بعد ذلك؟!

حل آخر قد يكون تنفيذ كائن TestListener الخاص بك وجعل هذا الكائن يكتب testResults إلى eventlog ، مباشرة إلى ملف تسجيل الدخول أو قاعدة بيانات أو في أي مكان تريده والتقاط هذا بواسطة FinalBuilder.

بدلاً من وجود شيء مثل هذا في ملف مشروعك

  Application.Initialize;
  if System.IsConsole then TextTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;

سيصبح شيئًا كهذا

  Application.Initialize;
  if System.IsConsole then OurEventLogTestRunner.RunRegisteredTests
  else GUITestRunner.RunRegisteredTests;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top