Adakah yang berhasil menghasilkan cakupan kode untuk pengujian unit Go? Saya tidak dapat menemukan alat untuk itu di web.
sumber
Adakah yang berhasil menghasilkan cakupan kode untuk pengujian unit Go? Saya tidak dapat menemukan alat untuk itu di web.
Perhatikan bahwa Go 1.2 (Q4 2013, rc1 tersedia) sekarang akan menampilkan hasil cakupan pengujian :
Salah satu fitur baru yang utama
go test
adalah bahwa ia sekarang dapat menghitung dan, dengan bantuan darigo tool cover
program " " baru yang dipasang secara terpisah , menampilkan hasil cakupan pengujian .The
cover
alat merupakan bagian darigo.tools
subrepository . Itu dapat diinstal dengan menjalankan
$ go get golang.org/x/tools/cmd/cover
Alat penutup melakukan dua hal.
- Pertama, ketika
go test
diberi-cover
bendera, " " dijalankan secara otomatis untuk menulis ulang sumber paket dan menyisipkan pernyataan instrumentasi. Tes ini kemudian disusun dan dijalankan seperti biasa, dan statistik cakupan dasar dilaporkan:
$ go test -coverprofile fmtcoverage.html fmt
ok fmt 0.060s coverage: 91.4% of statements
$
Kedua, untuk laporan yang lebih mendetail, tanda yang berbeda untuk "uji coba" dapat membuat file profil cakupan, yang
go tool cover
kemudian dapat dianalisis oleh program sampul, yang dipanggil dengan " ".
Versi terbaru Go (2013/09/19) menggunakan:
go test -coverprofile <filename> <package name>
Rincian tentang cara menghasilkan dan menganalisis statistik cakupan dapat ditemukan dengan menjalankan perintah
$ go help testflag
$ go tool cover -help
Ivan Black menyebutkan di komentarnya :
go test -coverprofile cover.out
dan kemudian
go tool cover -html=cover.out
terbukacover.out
di browser default Anda
Saya bahkan tidak ingin menunggu browser dibuka, jadi saya mendefinisikan alias ini:
alias gc=grep -v -e " 1$" cover.out
Bahwa saya hanya mengetik gc
, dan memiliki daftar semua garis tidak belum dibahas (di sini: dengan coverage.out
garis tidak berakhir dengan " 1
").
go test -coverprofile <filename> <package name>
go test -coverprofile cover.out
dan kemudiango tool cover -html=cover.out -o cover.html
bukacover.html
di browsergo tool cover -html=cover.out
akan secara otomatis membuka browser, tetapi tidak berfungsi untuk sistem saya. Saya lebih memilih untuk tetap membuka browser dan menyegarkan halaman jika perlu.Go hadir dengan alat yang luar biasa untuk pengujian dan cakupan. Meskipun semua alat Go terdokumentasi dengan baik,
go tool cover -help
saya sarankan membaca artikel cerita sampul di blog resmi Go . Ini memiliki banyak contoh dan saya sangat merekomendasikannya!Saya memiliki fungsi ini di ~ / .bash_profile saya. (Anda bisa menempelkannya di terminal untuk mencobanya).
Kemudian
cd
masuk ke folder go project / package dan ketikcover
. Ini membuka alat visual di browser yang menunjukkan kepada Anda kode yang diuji dan belum diuji untuk setiap file dalam paket saat ini. Perintah yang sangat berguna! Saya sangat merekomendasikannya untuk menemukan apa yang belum 100% diuji! Hasil yang ditampilkan adalah per file. Dari drop-down di kiri atas, Anda dapat melihat hasil untuk semua file.Dengan perintah ini Anda juga dapat memeriksa cakupan paket apa pun, misalnya:
cover fmt
Output di terminal dari perintah ini adalah:
Selain itu di browser Anda, Anda akan melihat alat ini menunjukkan semua baris kode berwarna merah yang tidak tercakup dalam tes:
Anda juga dapat menyimpan file cakupan html alih-alih membukanya di browser. Ini sangat berguna jika pengujian + cakupan Anda dijalankan oleh alat CI seperti Jenkins. Dengan begitu, Anda dapat menyajikan file cakupan dari server pusat dan seluruh tim akan dapat melihat hasil cakupan untuk setiap build.
sumber
Selain jawaban bagus di atas, saya menemukan tiga baris ini sebagai cara termudah untuk mendapatkannya (yang mencakup semua paket):
Perhatikan bahwa di file HTML Anda akan menemukan tombol dropdown yang akan mengarahkan Anda ke semua file.
sumber
Ada di sini , beberapa dokumen di sini .
Saya belum pernah menggunakannya, hanya ini yang saya tahu.
sumber
~/go/pkg/tool/linux_amd64
cocok dengan versi Go terakhir saya kemarin.Jika Anda ingin melihat garis-garis yang tidak tercakup oleh fungsinya secara langsung di terminal, saya menulis ulang alat sampul untuk tujuan ini. Ini tersedia di https://github.com/gregoryv/uncover .
Pemakaian
Screenshot
sumber
Jika Anda menggunakan VSCode , fungsionalitas ini didukung di luar kotak ( Tapi dinonaktifkan secara default )
Cukup aktifkan pengujian pada penyimpanan + pelaporan cakupan
https://github.com/microsoft/vscode-go/wiki/On-Save-features
Ini bahkan akan menunjukkan di editor Anda garis mana yang tidak tercakup yang sangat berguna.
sumber
Laporan Cakupan →
a) Jalankan semua tes dan aktifkan cakupan ->
go test ./... -coverprofile coverage.out
b) Dapatkan cakupan untuk fungsi individu serta cakupan keseluruhan →
go tool cover -func coverage.out
c) Lihat garis yang tercakup dan yang tidak tercakup dalam pengujian Anda →
go tool cover -html=cover.out -o coverage.html
. Bukacoverage.html
file yang dibuat dengan ini di browser dan analisis info cakupan terperinci.sumber
Cara cepat dan mudah adalah dengan menggunakan alat cakupan yang disertakan dengan fitur bawaan:
Setelah Anda menjalankan perintah di atas, jika Anda ingin melihat secara visual cakupan kode (seperti pernyataan tertutup dan tidak terjawab dll)
Catatan: Anda perlu menjalankan perintah di atas di folder tempat Anda ingin melihat cakupan
sumber
Terinspirasi oleh menu bantuan dan jawaban lain untuk pertanyaan ini, jalankan saja:
sumber
Coba gunakan Gambar Docker gaia-docker / base-go-build .
Ini adalah image Docker yang berisi semua yang Anda butuhkan untuk membangun dan menguji cakupan. Menjalankan cakupan pengujian di dalam container Docker membuat folder .cover dengan hasil cakupan pengujian project Anda.
The cakupan tes Script berjalan pada semua proyek folder dan menghasilkan, di dalam .cover folder JUnit dan cakupan laporan untuk setiap folder, dan laporan cakupan dari semua proyek menggabungkan tes.
Codecov juga menyarankan skrip yang mengumpulkan hasil cakupan: banyak file
sumber
go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html
Periksa Sudah Dipasang dengan Benar Dan Anda memiliki akses dari Terminal Anda
Jika Anda menjalankan uji kasus itu akan Reder File .json Berdasarkan file Anda akan mendapatkan Laporan Cakupan Kode dalam file .html
gocov test >your_Coverage_report.json
Setelah Test case Anda selesai Buat Laporan dalam File .html menggunakan .json
gocov-html your_Coverage_report.json >your_Coverage_report.html
Referensi
Alat Cakupan GoTest untuk go lang
Buka Alat Laporan Uji
Pergi cakupan Tes Asli
sumber