Lua Academy · leksjon

Kodedekning og testinstrumentering

Mål testdekning med luacov, og tolk dekningsrapporter.

Leksjon 4 av 413 trinn

Kodedekning og testinstrumentering er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva er kodedekning

Kodedekning måler hvilke linjer, grener eller funksjoner i koden som utføres av tester. Høy dekning gir tillit til at testene tester koden godt.

luacov: Standardverktøyet

luacov er standardverktøyet for Lua-kodedekning. Det kobler seg inn i Lua-debugglaget og registrerer hvilke linjer som utføres.

-- Run with luacov:
luacov script.lua
-- Or require at the start of the test file:
require("luacov")

Bruke luacov med en testkjører

Med busted eller en egendefinert testkjører laster du inn luacov med require ved starten, så registrerer det automatisk kodedekningen.

-- 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)

Generere en rapport

Etter at testene er kjørt, skriver luacov en luacov.stats.out-fil. Kjør luacov-reporter for å generere en menneskelesbar rapport.

# After tests:
luacov-reporter
# Produces luacov.report.out with per-file line coverage

Lese rapporten

Hver linje viser: antall treff, antall manglende treff og kildekodelinjen. Linjer med 0 treff er udekket kode – mulig død kode eller manglende testtilfeller.

Grendekning

luacov sporer linjedekning, ikke grendekning. For grendekning kan du bruke et mer avansert verktøy eller legge til testtilfeller for hver if/else-bane manuelt.

Egendefinert dekningshook

Bygg en minimal dekningsregistrering med debug.sethook for linjehendelser.

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()

Dekningsterskler

Angi en minstegrense for kodedekning i CI (f.eks. 80 %). La bygget mislykkes hvis dekningen faller under grensen. Dette hindrer at utilsiktet død kode samler seg opp.

Mønstre for testinstrumentering

I tillegg til dekning kan du instrumentere tester med: kjøretid (for å oppdage trege tester), assertsjoner for antall kall (for å kontrollere at funksjoner kalles forventet antall ganger) og verdifangst (for å registrere argumenter som sendes til mockede funksjoner).

Mocking for testisolasjon

Erstatt ekte moduler med mocker under testing for å isolere enheter. Lagre den ekte funksjonen, erstatt den med en stub som sporer kall, og gjenopprett den etter testen.

local realSend = http.send
local calls = {}
http.send = function(...) calls[#calls+1] = {...} end
-- run tests --
http.send = realSend  -- restore
print(#calls, "send calls")

Integrasjon med CI

Kjør luacov i CI-pipelinen. Last opp dekningsrapporter til Coveralls eller Codecov for å følge utviklingen mellom commits.

Dekningsspørsmål

Hva viser en linje med 0 treff i en luacov-rapport?

Oppsummering: Kodedekning og testinstrumentering

Bruk luacov til å registrere linjedekning og generere rapporter. Angi terskler for dekning i CI. Legg til egendefinert instrumentering med debug.sethook for spesialisert sporing. Bruk mocker for å isolere enhetstester og bekrefte antall kall.

Gratis å komme i gang

Lær deg Lua med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
40
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «Kodedekning og testinstrumentering» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Kodedekning og testinstrumentering», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Kodedekning og testinstrumentering»?

Mål testdekning med luacov, og tolk dekningsrapporter. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lua Academy?

Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Kodedekning og testinstrumentering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?

Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. debug-biblioteket i dybden
  2. Fjernfeilsøking med MobDebug
  3. Profilering med LuaProfiler
  4. Kodedekning og testinstrumentering
← Tilbake til Lua Academy