Uvod u Coberturu

1. Pregled

U ovom ćemo članku pokazati nekoliko aspekata generiranje izvješća o pokrivanju koda pomoću Coberture.

Jednostavno rečeno, Cobertura je alat za izvještavanje koji izračunava pokrivenost testima za bazu koda - postotak grana / linija kojima se pristupa jedinstvenim testovima u Java projektu.

2. Dodatak Maven

2.1. Maven konfiguracija

Da biste započeli s izračunavanjem pokrivenosti koda u vašem Java projektu, morate prijavite dodatak Cobertura Maven u svom pom.xml datoteka pod odjeljkom za izvještavanje:

   org.codehaus.mojo cobertura-maven-plugin 2.7 

Uvijek možete provjeriti najnoviju verziju dodatka u središnjem spremištu Maven.

Jednom kad završite, pokrenite Maven specificirajući cobertura: cobertura kao cilj.

To će stvoriti detaljno izvješće u HTML stilu koje prikazuje statistiku pokrivenosti koda prikupljenu putem instrumentacije koda:

Metrika pokrivenosti linije pokazuje koliko se izvoda izvršava u Jedinicnim testovima, dok metrika pokrivenosti grana usredotočuje se na to koliko je grana obuhvaćeno tim testovima.

Za svaki uvjet imate dvije grane, tako da ćete na kraju imati dvostruko više grana od uvjetnih.

Čimbenik složenosti odražava složenost koda - raste kad se broj grana u kodu poveća.

U teoriji, što više podružnica imate, više testova morate provesti kako biste povećali ocjenu pokrivenosti podružnica.

2.2. Konfiguriranje izračunavanja i provjere pokrivenosti koda

Pomoću alata možete ignorirati / izuzeti određeni skup klasa iz instrumentacije koda zanemariti i isključiti oznake:

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

Nakon izračunavanja pokrivenosti koda dolazi ček faza. The ček faza osigurava postizanje određene razine pokrivenosti kodom.

Evo osnovnog primjera kako konfigurirati ček faza:

  točno 75 85 75 85 75 85 com.baeldung.algorithms.dijkstra. * 60 50 

Kada koristite haltOnFailure zastava, Cobertura će uzrokovati da gradnja ne uspije ako jedna od navedenih provjera ne uspije.

The granicaRate / lineRate oznake navode minimalnu prihvatljivu ocjenu pokrivenosti grana / linija koja je potrebna nakon instrumentacije koda. Te se provjere mogu proširiti na razinu paketa pomoću packageLineRate / packageBranchRate oznake.

Također je moguće prijaviti određene provjere pravila za klase s imenima koja slijede određeni obrazac pomoću regex označiti. U gornjem primjeru osiguravamo da se mora postići određena ocjena pokrivenosti linije / podružnice za nastavu u com.baeldung.algorithms.dijkstra paket i ispod.

3. Dodatak za pomrčinu

3.1. Montaža

Cobertura je također dostupna i kao dodatak za Eclipse eCobertura. Kako bi se instalirala eCobertura za Eclipse morate slijediti dolje navedene korake i instalirati Eclipse verzije 3.5 ili noviju:

Korak 1: Na izborniku Eclipse odaberite PomoziteInstalirajte novi softver. Zatim, na Raditi sa polje, unesite //ecobertura.johoop.de/update/:

Korak 2: Odaberi Pokrivenost eCobertura koda, kliknite “next”, a zatim slijedite korake u čarobnjaku za instalaciju.

Sad to eCobertura je instaliran, ponovno pokrenite Eclipse i prikažite prikaz sesije pokrivanja pod Windows → Prikaži prikaz → Ostalo → Cobertura.

3.2. Korištenje Eclipse Keplera ili novijih

Za noviju verziju Eclipsea (Kepler, Luna, itd.), Instalacija eCobertura može uzrokovati neke probleme povezane s JUnit - novija verzija JUnit-a pakirana s Eclipseom nije u potpunosti kompatibilna s eCoberturaProvjera ovisnosti:

Nije moguće dovršiti instalaciju jer nije moguće pronaći jednu ili više potrebnih stavki. Softver koji se instalira: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) Nedostaje zahtjev: eCobertura UI 0.9.8.201007202152 (ecobertura.ui 0.9.8.201007202152) zahtijeva "paket org.junit4 0.0.0", ali ga nije moguće pronaći Ne može zadovoljiti ovisnost: Od: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) Do: ecobertura.ui [0.9.8.201007202152]

Kao zaobilazno rješenje možete preuzeti stariju verziju JUnit i smjestiti je u mapu dodataka Eclipse.

To se može učiniti brisanjem mape org.junit. *** iz % ECLIPSE_HOME% / dodaci, a zatim kopiranje iste mape iz starije instalacije Eclipse koja je kompatibilna s eCobertura.

Kad završite, ponovno pokrenite Eclipse IDE i ponovno instalirajte dodatak koristeći odgovarajuće web mjesto za ažuriranje.

3.3. Izvješća o pokrivenosti koda u Eclipseu

Da biste izračunali pokrivenost koda Unit Test-om, kliknite desni klik na projekt / test da biste otvorili kontekstni izbornik, a zatim odaberite opciju Cover As → JUnit Test.

Ispod Sjednica pokrivenosti možete provjeriti izvještaj o pokrivenosti linije / podružnice po razredu:

Korisnici Java 8 mogu naići na uobičajenu pogrešku pri izračunavanju pokrivenosti koda:

java.lang.VerifyError: Očekivanje okvira stackmape na cilju grane ...

U ovom se slučaju Java žali zbog toga što neke metode nemaju odgovarajuću mapu stogova zbog strožeg verifikatora bajt koda koji je uveden u novijim verzijama Jave.

Ovaj se problem može riješiti onemogućavanjem provjere u Java virtualnom stroju.

Da biste to učinili, desnom tipkom miša kliknite svoj projekt da biste otvorili kontekstni izbornik, odaberite Cover As, a zatim otvorite Konfiguracije pokrivenosti pogled. Na kartici argumenata dodajte -novirificirati zastava kao VM argument. Konačno, kliknite na pokrivenost gumb za pokretanje izračuna pokrivenosti.

Također možete koristiti zastavu -XX: -UpotrijebiSplitVerifier, ali ovo radi samo s Javom 6 i 7, jer podijeljeni provjerivač više nije podržan u Javi 8.

4. Zaključak

U ovom smo članku ukratko pokazali kako koristiti Cobertura za izračunavanje pokrivenosti koda u Java projektu. Opisali smo i korake potrebne za instalaciju eCobertura u vašem okruženju Eclipse.

Cobertura je sjajan, ali jednostavan alat za pokrivanje koda, ali se ne održava aktivno, jer je trenutno nadmašen novijim i moćnijim alatima poput JaCoCo.

Napokon, možete pogledati primjer naveden u ovom članku u GitHub projekt.