Liputan Kod dan Instrumentasi Ujian
Ukur liputan ujian dengan luacov dan tafsirkan laporan liputan.
Liputan Kod dan Instrumentasi Ujian ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah Liputan Kod?
Liputan kod mengukur baris, cabang atau fungsi kod anda yang dilaksanakan oleh ujian. Liputan yang tinggi memberikan keyakinan bahawa ujian menjalankan kod dengan baik.
luacov: Alat Standard
luacov ialah alat liputan standard Lua. Alat ini bersambung dengan lapisan penyahpepijatan Lua dan merekodkan baris yang dilaksanakan.
-- Run with luacov:
luacov script.lua
-- Or require at the start of the test file:
require("luacov")Menggunakan luacov dengan Pelaksana Ujian
Dengan busted atau pelaksana tersuai, perlukan luacov pada permulaan dan alat itu akan merekodkan liputan secara automatik.
-- spec/all_spec.lua
require("luacov")
describe("my module", function()
it("does something", function()
local m = require("mymodule")
assert.equals(m.add(1,2), 3)
end)
end)Menjana Laporan
Selepas ujian dijalankan, luacov menulis fail luacov.stats.out. Jalankan luacov-reporter untuk menjana laporan yang boleh dibaca manusia.
# After tests:
luacov-reporter
# Produces luacov.report.out with per-file line coverageMembaca Laporan
Setiap baris menunjukkan: bilangan kenaan, bilangan terlepas dan baris sumber. Baris dengan 0 kenaan ialah kod yang tidak diliputi — kemungkinan kod mati atau kes ujian yang tiada.
Liputan Cabang
luacov menjejaki liputan baris, bukan liputan cabang. Untuk liputan cabang, gunakan alat yang lebih maju atau tambahkan kes ujian secara manual bagi setiap laluan if/else.
Cangkuk Liputan Tersuai
Bina perakam liputan minimum dengan debug.sethook untuk peristiwa baris.
local covered = {}
debug.sethook(function(event, line)
local info = debug.getinfo(2, "S")
local src = info.short_src
covered[src] = covered[src] or {}
covered[src][line] = (covered[src][line] or 0) + 1
end, "l")
-- ... run tests ...
debug.sethook()Ambang Liputan
Tetapkan ambang liputan minimum dalam CI (contohnya, 80%). Gagalkan binaan jika liputan jatuh di bawahnya. Tindakan ini menghalang kod mati yang tidak disengajakan daripada terkumpul.
Corak Instrumentasi Ujian
Selain liputan, instrumentasikan ujian dengan: masa pelaksanaan (mengesan ujian perlahan), penegasan bilangan panggilan (mengesahkan fungsi dipanggil sebanyak bilangan yang dijangka) dan penangkapan nilai (merekod argumen yang dihantar kepada fungsi olok-olok).
Pengolokan untuk Pengasingan Ujian
Gantikan modul sebenar dengan modul olok-olok semasa pengujian untuk mengasingkan unit. Simpan fungsi sebenar, gantikan dengan fungsi gantian penjejakan dan pulihkannya selepas ujian.
local realSend = http.send
local calls = {}
http.send = function(...) calls[#calls+1] = {...} end
-- run tests --
http.send = realSend -- restore
print(#calls, "send calls")Integrasi dengan CI
Jalankan luacov dalam alur CI anda. Muat naik laporan liputan ke Coveralls atau Codecov untuk menjejaki perkembangannya merentas komit.
Soalan Liputan
Apakah yang ditunjukkan oleh baris dengan 0 capaian dalam laporan luacov?
Imbas Kembali: Liputan Kod dan Instrumentasi Ujian
Gunakan luacov untuk merekod liputan baris dan menjana laporan. Tetapkan ambang liputan dalam CI. Tambahkan instrumentasi debug.sethook tersuai untuk penjejakan khusus. Gunakan objek olokan untuk pengasingan ujian unit dan pengesahan kiraan panggilan.
Pelajari Lua dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Liputan Kod dan Instrumentasi Ujian” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “Liputan Kod dan Instrumentasi Ujian”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Liputan Kod dan Instrumentasi Ujian”?
Ukur liputan ujian dengan luacov dan tafsirkan laporan liputan. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Liputan Kod dan Instrumentasi Ujian” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pustaka debug secara Mendalam
- Penyahpepijatan Jauh dengan MobDebug
- Pemprofilan dengan LuaProfiler
- Liputan Kod dan Instrumentasi Ujian