"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الحصول على تغطية التعليمات البرمجية من اختبارات التكامل مقابل Go Binary؟

كيف يمكنني الحصول على تغطية التعليمات البرمجية من اختبارات التكامل مقابل Go Binary؟

تم النشر بتاريخ 2024-11-18
تصفح:979

How Can I Capture Code Coverage from Integration Tests Against a Go Binary?

التقاط تغطية التعليمات البرمجية من Go Binary

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

الحاجة إلى تغطية اختبار التكامل

توفر اختبارات التكامل رؤية أكثر شمولاً لتغطية التعليمات البرمجية من اختبارات الوحدة وحدها. من خلال تشغيل الملف الثنائي مقابل مدخلات العالم الحقيقي، يمكننا تقييم كيفية عمل التعليمات البرمجية الخاصة بنا في ظل ظروف مختلفة.

التحدي

تعمل أداة تغطية Go فقط بالاشتراك مع حزمة الاختبار. يشكل هذا مشكلة بالنسبة لاختبارات التكامل التي لا تتلاءم عادة مع هذا الإطار.

الحل: اختبارات التكامل في إطار اختبار Go

للحصول على التغطية من اختبارات التكامل ، نحتاج إلى دمجها في حزمة الاختبار بطريقة ما.

  1. إنشاء ملف اختبار: قم بإنشاء ملف اختبار ينفذ وظيفتك الرئيسية () في goroutine.
func TestMainApp(t *testing.T) {
    go main()
    // ... Start integration tests here
}
  1. تنفيذ اختبارات التكامل: استخدم exec.Cmd لتشغيل اختبارات التكامل الخاصة بك خارج goroutine الذي تم إنشاؤه مسبقًا.
  2. جمع إحصائيات التغطية: أخيرًا، اجمع إحصائيات التغطية باستخدام أداة التغطية.

موارد أخرى

للاطلاع على مناقشة سابقة حول هذا الموضوع، راجع مقال "اذهب إلى التغطية مع الاختبارات الخارجية"، والذي يستكشف نهجًا مشابهًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3