Introduksjon til Cobertura

1. Oversikt

I denne artikkelen vil vi demonstrere flere aspekter av generere kodedekningsrapporter ved bruk av Cobertura.

Enkelt sagt, Cobertura er et rapporteringsverktøy som beregner testdekning for en kodebase - prosentandelen av grener / linjer tilgang til enhetstester i et Java-prosjekt.

2. Maven-plugin

2.1. Maven-konfigurasjon

For å begynne å beregne kodedekning i Java-prosjektet ditt, må du erklære Cobertura Maven plugin i din pom.xml fil under rapporteringsdelen:

   org.codehaus.mojo cobertura-maven-plugin 2.7 

Du kan alltid sjekke den nyeste versjonen av programtillegget i Maven sentrale arkiv.

Når du er ferdig, kan du kjøre Maven og spesifisere cobertura: cobertura som et mål.

Dette vil opprette en detaljert HTML-stilrapport som viser kodedekningsstatistikk samlet via kodeinstrumentering:

Linjedekningsverdien viser hvor mange uttalelser som utføres i enhetstestene, mens avgrensningsberegningen for avdeling fokuserer på hvor mange filialer som dekkes av disse testene.

For hver betinget har du to grener, så i utgangspunktet vil du ende opp med å ha dobbelt så mange grener som betingede.

Kompleksitetsfaktoren gjenspeiler kompleksiteten til koden - det går opp når antall grener i kode øker.

I teorien, jo flere grener du har, desto flere tester trenger du å implementere for å øke avdelingens poengsum.

2.2. Konfigurere beregning og kontroll av kodedekning

Du kan ignorere / ekskludere et bestemt sett med klasser fra kodeinstrumentering ved hjelp av overse og utelukke tagger:

 org.codehaus.mojo cobertura-maven-plugin 2.7 com / baeldung / algoritmer / dijkstra / * com / baeldung / algoritmer / dijkstra / * 

Etter beregning av kodedekningen kommer Sjekk fase. De Sjekk fase sikrer at et visst nivå av kodedekning er nådd.

Her er et grunnleggende eksempel på hvordan du konfigurerer Sjekk fase:

  sann 75 85 75 85 75 85 com.baeldung.algorithms.dijkstra. * 60 50 

Når du bruker haltOnFailure flagg, vil Cobertura føre til at bygningen mislykkes hvis en av de angitte kontrollene mislykkes.

De branchRate / lineRate koder spesifiserer minimum akseptabel poengsum for gren- / linjedekning etter kodeinstrumentering. Disse sjekkene kan utvides til pakkenivå ved hjelp av packageLineRate / packageBranchRate koder.

Det er også mulig å erklære spesifikke regelkontroller for klasser med navn som følger et bestemt mønster ved å bruke regex stikkord. I eksemplet ovenfor sørger vi for at en spesifikk poengsum for linje / grendekning må oppnås for klasser i com.baeldung.algorithms.dijkstra pakken og under.

3. Eclipse-plugin

3.1. Installasjon

Cobertura er også tilgjengelig som et Eclipse-plugin eCobertura. For å installere eCobertura for Eclipse må du følge trinnene nedenfor og ha Eclipse versjon 3.5 eller nyere installert:

Trinn 1: Velg Eclipse-menyen HjelpInstaller ny programvare. Så, på jobbe med feltet, skriv inn //ecobertura.johoop.de/update/:

Steg 2: Å velge eCobertura-kodedekning, klikk “neste”, og følg deretter trinnene i installasjonsveiviseren.

Nå som eCobertura er installert, start Eclipse på nytt og vis dekkingsøktvisningen under Windows → Vis visning → Annet → Cobertura.

3.2. Bruke Eclipse Kepler eller senere

For den nyere versjonen av Eclipse (Kepler, Luna, etc.), installasjonen av eCobertura kan forårsake noen problemer relatert til JUnit - den nyere versjonen av JUnit pakket med Eclipse er ikke fullt kompatibel med eCoberturaAvhengighetskontroll:

Kan ikke fullføre installasjonen fordi en eller flere nødvendige elementer ikke ble funnet. Programvare som installeres: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) Manglende krav: eCobertura UI 0.9.8.201007202152 (ecobertura.ui 0.9.8.201007202152) krever 'bundle org.junit4 0.0.0', men den ble ikke funnet Kan ikke tilfredsstille avhengighet: Fra: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) Til: ecobertura.ui [0.9.8.201007202152]

Som en løsning kan du laste ned en eldre versjon JUnit og plassere den i Eclipse plugins-mappen.

Dette kan gjøres ved å slette mappen org.junit. *** fra % ECLIPSE_HOME% / plugins, og deretter kopiere den samme mappen fra en eldre Eclipse-installasjon som er kompatibel med eCobertura.

Når du er ferdig, start Eclipse IDE på nytt og installer pluginet på nytt ved hjelp av tilsvarende oppdateringsside.

3.3. Rapporter om kodedekning i formørkelse

For å beregne kodedekning av en enhetstest, høyreklikk på prosjektet / testen for å åpne hurtigmenyen, og velg deretter alternativet Dekk som → JUnit Test.

Under Dekningsøkt visning, kan du sjekke linje- / avdekkingsrapporten per klasse:

Java 8-brukere kan støte på en vanlig feil når de beregner kodedekning:

java.lang.VerifyError: Forventer en stackmap-ramme ved grenmål ...

I dette tilfellet klager Java på at noen metoder ikke har et ordentlig stakkart, på grunn av den strengere bytecode-verifisereren som ble introdusert i nyere versjoner av Java.

Dette problemet kan løses ved å deaktivere bekreftelse på Java Virtual Machine.

For å gjøre det, høyreklikk prosjektet ditt for å åpne hurtigmenyen, velg Cover As, og åpne deretter Dekningskonfigurasjoner utsikt. I argumentfanen legger du til -opprettholde flagg som et VM-argument. Til slutt klikker du på dekning -knappen for å starte dekningsberegning.

Du kan også bruke flagget -XX: -UseSplitVerifier, men dette fungerer bare med Java 6 og 7, ettersom split verifier ikke lenger støttes i Java 8.

4. Konklusjon

I denne artikkelen har vi kort vist hvordan du bruker Cobertura til å beregne kodedekning i et Java-prosjekt. Vi har også beskrevet trinnene som kreves for å installere eCobertura i ditt formørkelsesmiljø.

Cobertura er et flott, men likevel enkelt kodedekkingsverktøy, men ikke aktivt vedlikeholdt, da det for øyeblikket er utklasset av nyere og kraftigere verktøy som JaCoCo.

Til slutt kan du sjekke ut eksemplet i denne artikkelen i GitHub-prosjekt.


$config[zx-auto] not found$config[zx-overlay] not found