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

كيفية قياس تغطية الاختبار لاختبارات التكامل Go؟

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

How to Measure Test Coverage for Go Integration Tests?

تحديد تغطية الاختبار في اختبارات تكامل Go

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

قياس التغطية في الاختبارات غير المتعلقة بالحزم

في السيناريو الموصوف، تكون الاختبارات منفصلة عن الحزم يختبرون. وبناءً على ذلك، يُبلغ الأمر go test -cover عن تغطية بنسبة 0%. لمعالجة هذه المشكلة، يمكن للمرء استخدام التوجيه -coverpkg.

استخدام -coverpkg لتغطية الحزمة المحددة

يتيح التوجيه -coverpkg قياس تغطية الاختبار في نطاق محدد الحزمة، حتى لو كانت الاختبارات خارجية. يأخذ مسار الحزمة كوسيطة لها.

على سبيل المثال، يقيس الأمر التالي تغطية حزمة mypackage:

$ go test -cover -coverpkg mypackage ./src/api/...

يسمح هذا الأسلوب بالتحليل المستهدف لتغطية الحزمة في اختبارات التكامل.

مثال للتغطية الإخراج

فكر في مثال حيث تحتوي حزمة واجهة برمجة التطبيقات على اختبارات في main_test.go. معظم منطق الأعمال موجود في الحزمة mypackage. تنفيذ الأمر باستخدام -coverpkg يوفر تمثيلًا أكثر دقة للتغطية:

$ go test -cover -coverpkg mypackage ./src/api/...
ok      /api    0.190s  coverage: 50.8% of statements in mypackage
ok      /api/mypackage   0.022s  coverage: 0.7% of statements in mypackage

يوضح هذا الإخراج أن الاختبارات تغطي 50.8% من العبارات في حزمة mypackage. في المقابل، بدون استخدام -coverpkg، ستظهر التغطية أعلى بنسبة 71.0%، وذلك بسبب اختبارات خارج الحزمة المحددة.

اعتبارات إضافية

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

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

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

Copyright© 2022 湘ICP备2022001581号-3