سؤال

لدي نفس ملفات المصدر (C و OBJ-C) التي يتم تجميعها في هدفين: اختبار الوحدة القابل للتنفيذ والمنتج الفعلي (الذي يتم اختبار التكامل بعد ذلك). البناء الهدفان في أماكن مختلفة ، بحيث تكون ملفات الكائنات وملفات .gcno و .gcda منفصلة. لم يتم تجميع جميع ملفات المصدر في اختبار الوحدة ، لذلك لن توجد جميع الكائنات هناك. يتم تجميع جميع ملفات المصدر في بناء المنتج.

هل هناك طريقة للجمع بين مجموعتين من ملفات .gcda للحصول على التغطية الكلية لاختبارات الوحدة واختبارات التكامل (كما يتم تشغيلها على بناء المنتج)؟

أنا أستخدم LCOV.

Mac OS X 10.6 ، GCC 4.0

شكرًا!

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

المحلول

نظرًا لأنك تستخدم LCOV ، يجب أن تكون قادرًا على تحويل ملفات GCOV .GCDA إلى ملفات LCOV ودمجها باستخدام LCOV --add-tracefile.

من Manpage: أضف محتويات Tracefile. حدد العديد من التتبعات باستخدام مفتاح -a لدمج بيانات التغطية الموجودة في هذه الملفات عن طريق إضافة عدد التنفيذ لمطابقة مجموعات الاختبار وتضمييم الملف.

نصائح أخرى

أخيرًا ، تمكنت من حل مشكلتي عن طريق LCOV.

في الأساس ما فعلته هو ما يلي:

  • تجميع التطبيق مع الأعلام -fprofile-arcs -ftest-coverage --coverage
  • قم بتوزيع نسخة التطبيق على كل عقدة.
  • قم بتنفيذ التطبيق في كل عقدة بالتوازي. (تنشئ هذه الخطوة في دليل التطبيق في استضافة معلومات التغطية)
  • دع LCOV يقوم بعمله:
    • lcov --directory src/ --capture --output-file coverage_reports/app.info
  • توليد إخراج HTML:
    • genhtml -o coverage_reports/ coverage_reports/app.info

آمل أن يكون هذا مفيدًا لشخص ما.

أقوم بدمجها بواسطة معلمات LCOV متعددة D -D على النحو التالي. إنها تعمل.

lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top