Perlindungan ujian perisian sangat penting dalam pembangunan perisian. Ujian ini memastikan bahawa perisian berjalan seperti yang diharapkan, dan liputan ujian memastikan anda menyemak semua kemungkinan kod. Banyak bahasa moden mempunyai perpustakaan atau alat yang menjana liputan liputan, tetapi adakah anda tahu bahawa terdapat alat "asli" untuk bahasa C?
mari kita mulakan dengan kod mudah yang mengembalikan kod ± 42:
<code class="language-c">#include <stdbool.h> int return_42(bool ret_neg) { if (ret_neg) return -42; return 42; }</code>
sekarang adalah fail ujian mudah:
<code class="language-c">#include <assert.h> #include <stdbool.h> #include <stdio.h> int return_42(bool ret_neg); int main() { assert(return_42(false) == 42); assert(return_42(true) == -42); puts("Nice"); return 0; }</code>
Sekarang, kita boleh menggunakan pengkompil GCC/CC dan -fprofile-arcs
dan -ftest-coverage
untuk menyusun kod.
Ini akan menghasilkan fail dengan fail yang boleh dilaksanakan dan nama lanjutan .gcno
.
Selepas membuat fail ini, kami menjalankan ujian dan membuat fail dengan lanjutan .gcda
selepas operasi.
Dengan fail yang baru dibuat ini, kita boleh menggunakan alat GCOV untuk memprosesnya (sila pasangkan GCOV terlebih dahulu), kemudian laksanakan GCOV dan lulus dalam .gcda
dan .gcno
nama fail (biasanya mereka mempunyai nama yang sama seperti .c
fail, nama yang sama, fail dalam nama yang sama, nama yang sama, fail dalam nama yang sama, fail, nama yang sama, fail, fail dalam nama yang sama, fail, fail, fail, Fail, fail, fail, fail, fail, fail, fail, fail, fail, fail, fail, fail, fail, fail, fail, fail itu sama nama, fail, tetapi mungkin berbeza). Ini akan menghasilkan fail dengan sambungan .gcov
. GCOV akan memberikan ringkasan kecil mengenai liputan, tetapi untuk lebih daripada ujian mudah (contohnya, saya mempunyai lebih daripada 120 ujian di perpustakaan), kita perlu memaparkan hasil yang lebih intuitif.
Seterusnya, kami akan menggunakan LCOV (sila pasang LCOV terlebih dahulu), dan gunakan -c
, -d .
dan -o foobar.info
untuk menjalankan LCOV. Ia akan menghasilkan fail yang dipanggil dan mencetak liputan liputan. Malangnya, ringkasan ini tidak menunjukkan fungsi mana yang telah diperiksa, tetapi dengan fail foobar.info
yang dicipta, kita boleh menggunakan .info
untuk menjalankan LCOV, yang akan mencetak ringkasan bentuk yang lebih mudah dibaca. Walau bagaimanapun, kita masih mendapat satu peratusan, dan kita tidak dapat melihat garis mana yang telah diperiksa, jadi marilah kita memasuki langkah terakhir, menjadikan hasilnya lebih mudah untuk digambarkan. -l foobar.info
dan foobar.info
tanda. GenHTML akan menghasilkan folder yang mengandungi liputan yang lebih mudah dibaca (anda boleh membuka fail HTML ini dengan cara. Cara kegemaran peribadi saya untuk dibuka ialah menggunakan -o bar_html
). python -m http.server -d bar_html
Anda juga boleh menggunakan Clang, tetapi tanda akan berubah. Oleh kerana saya tidak seperti Clang, dan saya rasa bahawa hasil akhir tidak cantik, saya tidak belajar di -Depth, tetapi sejauh saya cuba, semua fungsi boleh berjalan dengan LLVM. Alat LLVM.
Baiklah, di sini ada hari ini, sampai jumpa lagi!
Atas ialah kandungan terperinci C Liputan Ujian di C adalah dan akan mengajar anda cara menggunakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!