سؤال

أقوم بترحيل مشروعين من تصميم النمل إلى تصميم مخضرم.خادم البناء هو Hudson وسيظل كذلك.

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

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

على العموم الحل الذي أبحث عنه يجب أن يكون:

  • إجراء اختبارات آلية لجميع الوحدات وتسجيل النتائج مرة واحدة;
  • عرض تغطية رمز الوحدة الفردية في هدسون;
  • يمكن تكوينها بسهولة مرة واحدة للمشروع بأكمله, ، وليس في كل وحدة.

يمكن أن يعتمد الحل على Cobertura أو Emma أو أي أداة أخرى لتغطية كود Java.


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

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

المحلول

سونار هي أداة رائعة جدًا ويمكن دمجها بسهولة مع Hudson، وأنا أحب حقًا تنظيمها للمشاريع متعددة الوحدات.يجب عليك محاولة إعطائها

نص بديل http://sonar.codehaus.org/wp-content/uploads/2009/08/dashboard.png

نصائح أخرى

إنه أمر اختراقي بعض الشيء، لكن النهج الذي أستخدمه هو استخدام ملف نسخة معدلة من البرنامج المساعد Maven cobertura (الذي متاح من الريبو الخاص بهم).فهو يوفر هدف cobertura:generate-report، بحيث يمكنك إدراج cobertura:instrument وcobertura:generate-report في دورة حياتك قبل تشغيل الاختبارات وبعدها، على التوالي.سيوفر لك ذلك بيانات التغطية التي تريدها دون تنفيذ/تسجيل الاختبار المكرر.

المشكلة الأساسية هي أن جميع المكونات الإضافية لتغطية Maven غير التابعة لـ Clover التي واجهتها مبنية على فكرة تشغيل الاختبارات بتغطية منفصلة عن تنفيذ الاختبار الرئيسي في دورة حياة Maven.ومن الواضح أن هذا يؤدي إلى مجموعتين من عمليات التنفيذ الاختبارية.إذا كنت تستخدم مشروعًا حرًا، فستحصل على مجموعة واحدة فقط من الاختبارات المسجلة (نظرًا لأنه، حتى مع تنفيذ اختبارين، توجد نسخة واحدة فقط من مخرجات الاختبار)، ولكن نوع مشروع Maven يعترض فعليًا عمليات تنفيذ Maven mojo و يسجل مخرجات/نتائج الاختبار في وقت تنفيذ الاختبار، وليس مرة واحدة في نهاية الإنشاء كما تفعل المشروعات الحرة.وهذا له الكثير من المزايا، ولكن له أيضًا عيبًا صارخًا إلى حد ما وهو أن الاختبار الواحد الذي يتم تنفيذه مرتين يتم احتسابه كاختبارين.

ومع ذلك، على الرغم من أنني رأيت حججًا قوية لإجراء اختبارات ضد كل من التعليمات البرمجية المجهزة وغير المجهزة بأدوات، إلا أنني أفضل إجراء الاختبارات مرة واحدة فقط، مقابل التعليمات البرمجية المجهزة - ليس فقط بسبب مشكلات Maven/Hudson، ولكن لأنه عندما" إذا كانت لديك اختبارات تستغرق 45 دقيقة، فمن السخافة بصراحة إجراؤها مرتين للحصول على نفس النتيجة.

روبرت,

لقد واجهت هذه المشكلة أيضًا ووجدت أن Hudson لا يقدم تقريرًا مزدوجًا إذا قمت بإعداد المشروع كمشروع حر بدلاً من مشروع Maven2.إنك تفقد بعضًا من روعة امتلاك مشروع maven2، ولكن بالنسبة لنا، كانت هذه تجارة يتعين علينا القيام بها.

جيف

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

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

يعد عدم وجود مستودع قياسي للقطع الأثرية داخل Hudson أمرًا محبطًا بعض الشيء، ولكن من المنطقي إعطاء المؤلفين عادةً استخدام Maven لتلك الاحتياجات.تعمل عملية الإنشاء الخاصة بنا على خوادم متعددة، لذا لا يمكننا استخدام المسارات النسبية في أدلة الوظائف الأخرى فحسب.

لاحظ أننا نفعل نفس الشيء بالنسبة للمقاييس الأخرى:نتائج الاختبار، JavaNCSS، إلخ.وانضم إما باستخدام الأدوات الصحيحة أو بعض التعليمات البرمجية المخصصة.

نحن نستخدم نفس المستودع لأعمال البناء التقليدية:ملفات DLL وJARs والبرامج النصية للتثبيت.

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

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

هل فكرت البرسيم الأطلسي?

لدى البرنامج المساعد maven-clover2 هدف جديد: Clover2:setup والتي سوف تقوم ببساطة بقياس اختباراتك دون التفرع في دورة الحياة، أو تشغيل الاختبارات مرتين.

يمكنك تحديد الأهداف التي سيتم تشغيلها في هدسون على النحو التالي:

mvn clover2:setup verify clover2:aggregate clover2:clover

البرنامج المساعد maven-clover2 مجاني تمامًا للتجربة لمدة 30 يومًا.

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