سؤال

وأنا باستخدام مخضرم (2) COBERTURA المكونات لإنشاء تقارير عن مدونة التغطية، ولدي كعب التالية أستخدمه في الأسلوب:

try {
    System.exit(0);
} catch (final SecurityException exception) {
    exception.printStackTrace();
}
System.err.println("The program never exited!");

وأنا أعلم أنني بحاجة إلى تسجيل استثناء، وما إلى ذلك، ولكن هذا ليس النقطة الآن ... COBERTURA ترفض الاعتراف بأن الخط بعد طباعة تتبع المكدس مغطى. وهذا هو، تمشيا مع '} "قبل عبارة System.err.println لا يتم كما هو موضح تغطيتها. من قبل، كان لا يظهر على إنهاء متعرج من الأسلوب كما تغطيتها، ومن ثم بيان System.err. أي فكرة كيف يمكن إقناع المساعد مخضرم COBERTURA أنه لما يتم تغطية بيان System.err.println، أن إنهاء هدفين له أنه قد تم تغطيتها؟

وأوه نعم، وأنا أستخدم مدير الأمن وهمية لرمي استثناء أمان، لأن هذا هو أسهل طريقة لقد وجدت لجعل اختبار متابعة تنفيذ بعد المكالمة System.exit.

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

المحلول

وأنا لم تستخدم COBERTURA في حين (2005؟)، ورأى هذا السلوك آنذاك. يوجد مشكلة مماثلة مع NCover لC # و الأقواس المعقوفة التالية الصيد / أخيرا كتل.

واقتراحي سيكون إضافة إلى هذا التقرير علة COBERTURA تفاصيل قضية مماثلة . أيضا، تابع @ المشورة tvanfosson وأدرك عدم وجود تغطية على متعرج، والتي لا تصبح في الواقع أي شيء في JVM، هو شيء يمكنك تجاهل ك "الضوضاء".

نصائح أخرى

وأود أن ننظر في التقرير التغطية. تحقق مزدوج بلدي التجارب. لاحظ أن الرمز حقا هو الحصول على تغطية ولا تقلق بشأن ضرب 100٪. يتم استخدام أفضل تغطية رمز للعثور على المناطق التي قد أهملت لضرب مع الاختبارات الخاصة بك، ولكن فقط تركز على الحصول على تغطية 100٪ كهدف غير العادة السيئة التي يمكن أن تؤدي لك تخطي الاختبارات التي تحتاج إلى أن تكون مكتوبة فقط ليظهر أداة الخاص بك 100٪. استخدام أداة لما يمكن القيام به ولكن لا تقع في فخ السماح للأداة تعريف ما تفعله.

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

وأنا أعلم أن إيما لديه مشاكل مماثلة. البرسيم فارس أفضل بكثير، ولكن التجارية (غير متأكد إذا كان من شأنه التعامل مع هذه الحالة أيضا) . إذا كنت تستخدم IDEA، يجب أن تحاول بها التغطية الجديدة تنفيذ - انها جيدة جدا وفي التنمية النشطة

وأعرف أن هذا هو السؤال القديم والتي COBERTURA حددت هذا بالفعل، ولكن لاكتمال التغطية المفقودة على "}" ناجم عن كتلة الداخلي تلقائيا "في نهاية المطاف".

وانظر التعليمات البرمجية كما يلي:

try {
    System.exit(0);
} catch (final SecurityException exception) {
    exception.printStackTrace();
} finally {
    // noop
}

ولحسن الحظ هذا لم يعد يحدث لبعض إصدارات.

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