Saya selalu menggunakan Jasmine untuk pengujian unit saya, tetapi baru-baru ini saya mulai menggunakan Istanbul untuk memberi saya laporan cakupan kode. Maksud saya, saya mendapatkan intisari dari apa yang mereka coba sampaikan kepada saya, tetapi saya tidak benar-benar tahu apa yang mewakili masing-masing persentase ini (Stmts, Branches, Funcs, Lines). Sejauh ini Googling saya tidak dapat menemukan penjelasan / sumber daya yang kuat.
Pertanyaan : Seperti yang saya katakan, saya mendapatkan intinya, tetapi bisakah seseorang mengirim penjelasan yang tepat atau tautan ke penjelasan yang tepat?
Pertanyaan Tersier : Apakah ada cara untuk mengidentifikasi bagian spesifik dari kode Anda yang tidak dicakup? Sejauh ini tanpa benar-benar membaca laporan ini, pada dasarnya saya menebak.
-------------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
-------------------|-----------|-----------|-----------|-----------|
controllers/ | 88.1 | 77.78 | 78.57 | 88.1 |
dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
sumber
Jawaban:
Ada sejumlah kriteria cakupan, yang utama adalah:
Untuk setiap kasus, persentase mewakili kode yang dieksekusi vs kode yang tidak dieksekusi , yang sama dengan setiap fraksi dalam format persen (mis: 50% cabang, 1/2).
Dalam laporan file:
'E'
singkatan dari 'else path not taken', yang berarti bahwa untuk pernyataan if / else yang ditandai, path 'if' telah diuji tetapi tidak untuk 'else'.'I'
singkatan 'jika jalan tidak diambil', yang merupakan kasus sebaliknya: 'jika' belum diuji.xN
di sebelah kiri adalah jumlah kali garis itu dieksekusi.Ini telah diverifikasi untuk Istanbul v0.4.0, saya tidak yakin apakah ini masih berlaku untuk versi berikutnya, tetapi karena perpustakaan didasarkan pada prinsip-prinsip teori yang solid, perilaku seharusnya tidak terlalu banyak berubah untuk versi yang lebih baru.
Ini juga menyediakan beberapa kode warna -
Merah muda : pernyataan tidak tercakup.
Oranye : fungsi tidak tercakup.
Kuning : cabang tidak tercakup.
Dokumentasi Istanbul selengkapnya di sini:
https://istanbul.js.org
Untuk teori yang lebih mendalam tentang cakupan kode:
https://en.wikipedia.org/wiki/Code_coverage
Semoga ini bisa membantu!
sumber
Menjalankan istanbul juga harus menghasilkan file HTML untuk laporan (harus dalam folder cakupan). HTML ini akan memberi Anda informasi pencarian ketika Anda mengklik file / folder.
Persentase fungsi yang tercakup dihitung oleh jumlah fungsi yang dipanggil selama tes, dibagi dengan jumlah total fungsi. Hal yang sama berlaku untuk baris dan pernyataan (yang biasanya akan saling berdekatan kecuali Anda memiliki pernyataan yang sangat panjang). Cabang berarti titik keputusan seperti
if-else
blok. Misalnya, kode Anda hanya berisi satuif-else
pernyataan, dan tes Anda hanya melewatiif
bagian tetapi bukanelse
bagian, maka persentase cabang Anda harus 50%.Harapan yang membuat segalanya lebih jelas.
sumber
"test" : "nyc mocha"
dalampackage.json
. Folder jangkauan saya kosong. Pikiran?"test" : "nyc --reporter=html mocha"
Menambah jawaban sebelumnya
% Pernyataan dihitung dengan mengambil persentase dari jumlah pernyataan yang dicakup oleh tes Anda misalnya 12/18 * 100 = 66,67%. Ini berarti bahwa tes Anda hanya mencakup 66,67%.
Cabang% juga dihitung dengan cara yang sama. Sama untuk% Fungsi dan% baris Anda.
Di direktori root proyek Anda, ada folder cakupan yang berisi hasil HTML pengujian Anda. Klik dan lihat di browser. Anda harus melihat sesuatu seperti ini
Gambar yang menunjukkan output dari hasil pengujian Anda
Saya harap ini membantu Anda memahaminya dengan lebih baik.
sumber