يواصل زميلنا سكوت هانسلمان دراسة الاختبار وتغطية الكود في .NET Core. لقد تمكن بالفعل من التحدث عن بعض الأدوات لتحسين جودة الاختبار ، واليوم يتحدث عن
شيء آخر :
AltCover . انظر تحت القط!
أمرر الكلمة إلى سكوت هانسلمان .
في وقت سابق من هذا الأسبوع قمت بمراجعة الغطاء . هناك أيضًا أداة OpenCover تحظى باحترام كبير والعديد من المشاريع المثيرة للاهتمام التي تحاول جعل OpenCover يعمل مع .NET Core ، ولكن فقط على Windows.
سأدرس اليوم AltCover Steve Gilham. توجد أدوات الكشف عن التغطية التي تستخدم .NET Profiling API في وقت التشغيل. في المقابل ، يشير AltCover إلى IL لهذا .
كما يوحي الاسم ، هذا نهج بديل للتغطية. بدلاً من العمل من خلال واجهة برمجة تطبيقات .NET-profiling API في وقت التشغيل ، فإنه يضيف نفس IL الإضافي إلى ما نريد بناءه ، حتى قبل التنفيذ. هذا يعني أنه يجب أن يعمل في كل مكان تقريبًا ، على أي نظام أساسي ، طالما أن عملية التنفيذ لديها حق الوصول لتعديل ملف النتيجة. يمكنك الجمع بين المنصات المختلفة المستخدمة للأجهزة وتلك التي تم اختبارها.
لا يعد AltCover جزءًا فقط من حزمة NuGet ، ولكنه متاح أيضًا كجزء من أداة .NET Core Global ، وهي أداة رائعة.
dotnet tool install --global altcover.global
هذا يسمح لك باستخدام الأمر altcover في أي مكان دون إضافته إلى المشروع.
ومع ذلك ،
سأستعرض دليل الإعداد السريع AltCover وأرى مدى السرعة التي يمكنني القيام بها!
سأقوم بتثبيته في hanselminutes.core.tests مشروع المشروع الخاص بي ،
dotnet add package AltCover
ثم سأطلقها.
dotnet test /p:AltCover=true
عظيم. تعمل اختباراتي كالمعتاد ، ولكن الآن لدي ملف test.xml في مجلد الاختبار. إذا رغبت في ذلك ، يمكنني أيضًا إنشاء تقارير LCov أو Cobertura. بالفعل ، يبلغ حجم ملف cover.xml نصف ميغابايت تقريبًا! يحتوي على الكثير من المعلومات المفيدة ، ولكن كيف يمكنني رؤية النتائج في شكل قابل للقراءة؟

الملف بتنسيق OpenCover XML ، لذا يمكنني تشغيل
ReportGenerator لملف التغطية والحصول على مجموعة كاملة من ملفات HTML. في الواقع ، موقع صغير كامل التغطية!
لقد قمت بتنزيل ReportGenerator ووضعه في مجلد منفصل (هذا هو أفضل حل لأداة .NET Core Global Tool).
c:\ReportGenerator\ReportGenerator.exe -reports:coverage.xml -targetdir:./coverage
تأكد من أنك تستخدم targetDir جيدًا ، وإلا ستحصل على العشرات من ملفات HTML غير الضرورية في مجلد المشروع. يجدر أيضًا التفكير في إعداد .gitignoring للمجلد الناتج وملف التغطية. افتح index.htm وقم بتقييم كل هذه المعلومات المفيدة!

تحقق من النقاط الساخنة للمخاطر أعلاه! لدي CustomPageHandler مع
تعقيد NPath كبير
وطريقتين مع
تعقيد سيكلوميك كبير.
قم أيضًا بتقييم تغطية المسار الممتازة كما هو موضح هنا في نتائج تقرير التغطية. قد تلاحظ أن EnableAutoLinks كان دائمًا صحيحًا ، لذلك راجعت طريقة واحدة فقط. ربما سأجري اختبارًا سلبيًا هنا ومعرفة ما إذا كانت هناك أي آثار جانبية إذا كان EnableAutoLinks خطأ.
اقرأ البرنامج التعليمي الكامل لـ AltCover . هناك العديد من الطرق لتشغيل هذه الأداة ، من الأدوات العالمية ، الأدوات العالمية ، اختبارات dotnet ، مهام MSBuild إلى التكامل مع PowerShell!
- للحصول على أمثلة للاستخدام ، انقر هنا .
- لعرض أوضاع التشغيل ، انقر هنا .
- لتشغيل AltCover من اختبار dotnet ، انتقل إلى تكامل اختبار dotnet.
- لتشغيل AltCover من MSBuild ، انتقل هنا .
- لتشغيل AltCover وأدوات Windows PowerShell أو PowerShell Core ذات الصلة ، انتقل إلى هنا .
هناك العديد من الأمثلة الجيدة هنا ، واستغرق الأمر حرفيا 10 دقائق للحصول على تقرير تغطية ممتاز مع AltCover و .NET Core. بفضل ستيف من AltCover! تفضل بزيارة
github.com/SteveGilham/altcover لإعطائه علامة النجمة أو الإبلاغ عن مشكلات الملف أو تقديم المساعدة! والأهم من ذلك ، مشاركة المشاريع مفتوحة المصدر مثل هذا مع الأصدقاء والزملاء.