Rekan kami, Scott Hanselman, terus mempelajari pengujian dan cakupan kode dalam .NET Core. Dia sudah berhasil berbicara tentang beberapa alat untuk meningkatkan kualitas pengujian, dan hari ini dia berbicara tentang satu
hal lagi:
AltCover . Lihat di bawah kucing!
Saya melewati lantai untuk Scott Hanselman .
Awal minggu ini saya meninjau selimut . Ada juga alat OpenCover yang sangat dihormati dan beberapa proyek menarik yang mencoba membuat OpenCover bekerja dengan .NET Core, tetapi hanya di Windows.
Hari ini saya akan mempelajari AltCover Steve Gilham. Ada alat deteksi cakupan yang menggunakan .NET Profiling API saat runtime. AltCover, sebaliknya, mengacu pada IL untuk ini .
Seperti namanya, ini adalah pendekatan alternatif untuk cakupan. Alih-alih bekerja melalui .NET-profiling API saat runtime, ia menambahkan IL ekstra yang sama dengan apa yang ingin kita bangun, bahkan sebelum eksekusi. Ini berarti bahwa ia harus bekerja hampir di mana saja, pada platform apa pun, selama proses eksekusi memiliki akses untuk memodifikasi file hasil. Anda dapat menggabungkan berbagai platform yang digunakan untuk instrumentasi dan yang diuji.
AltCover tidak hanya bagian dari paket NuGet, tetapi juga tersedia sebagai bagian dari .NET Core Global Tool, yang luar biasa.
dotnet tool install --global altcover.global
Ini memungkinkan Anda untuk menggunakan perintah altcover di mana saja tanpa menambahkannya ke proyek.
Namun, saya akan pergi melalui
panduan pengaturan cepat AltCover dan melihat seberapa cepat saya bisa melakukannya!
Saya akan menginstalnya di proyek pengujian saya hanselminutes.core.tests,
dotnet add package AltCover
dan kemudian saya akan meluncurkannya.
dotnet test /p:AltCover=true
Bagus Tes saya berjalan seperti biasa, tetapi sekarang saya memiliki file test.xml di folder tes. Jika diinginkan, saya juga bisa menghasilkan laporan LCov atau Cobertura. Sudah, file coverage.xml beratnya hampir setengah megabyte! Ini memiliki banyak informasi berguna, tetapi bagaimana saya bisa melihat hasilnya dalam bentuk yang dapat dibaca?

File ini dalam format OpenCover XML, jadi saya bisa menjalankan
ReportGenerator untuk file cakupan dan mendapatkan sejumlah besar file HTML. Bahkan, seluruh situs cakupan mini!
Saya mengunduh ReportGenerator dan meletakkannya di folder terpisah (ini adalah solusi terbaik untuk .NET Core Global Tool).
c:\ReportGenerator\ReportGenerator.exe -reports:coverage.xml -targetdir:./coverage
Pastikan Anda menggunakan targetDir yang baik, jika tidak, Anda akan mendapatkan lusinan file HTML yang tidak perlu dalam folder proyek. Ini juga layak mempertimbangkan pengaturan .gitignoring untuk folder dan file cakupan yang dihasilkan. Buka index.htm dan beri peringkat semua informasi bermanfaat ini!

Lihatlah Hotspot Risiko di atas! Saya memiliki CustomPageHandler dengan
kompleksitas NPath yang signifikan dan dua tampilan dengan
kompleksitas siklomatik yang signifikan.
Juga mengevaluasi cakupan trek yang sangat baik seperti yang ditunjukkan di sini dalam hasil laporan cakupan. Anda mungkin memperhatikan bahwa EnableAutoLinks selalu benar, jadi saya hanya memeriksa satu cara. Mungkin saya akan menjalankan tes negatif di sini dan melihat apakah ada efek samping jika EnableAutoLinks salah.
Baca tutorial AltCover yang lengkap . Ada banyak cara untuk menjalankan alat ini, dari alat global Alat Global, tes dotnet, tugas MSBuild hingga integrasi dengan PowerShell!
- Untuk contoh penggunaan, klik di sini .
- Untuk melihat mode operasi, klik di sini .
- Untuk menjalankan AltCover dari tes dotnet, buka integrasi tes dotnet.
- Untuk menjalankan AltCover dari MSBuild, buka di sini .
- Untuk meluncurkan AltCover dan alat Windows PowerShell atau PowerShell Core yang terkait, buka di sini .
Ada begitu banyak contoh bagus di sini, dan saya butuh 10 menit untuk mendapatkan laporan cakupan yang sangat baik dengan AltCover dan .NET Core. Terima kasih kepada Steve dari AltCover! Kunjungi
github.com/SteveGilham/altcover untuk memberinya tanda bintang, melaporkan masalah file, atau menawarkan bantuan! Dan yang paling penting, bagikan proyek sumber terbuka seperti ini dengan teman dan kolega.