Ohjelmointi

Yksikkötestikoodin kattavuus Mavenin ja Jacocon kanssa

Lisää otsikko tähän

Yksikkötestikoodin kattavuuden kerääminen on helppoa, koska kaikki yleiset työkalut on suunniteltu siihen.

Tässä artikkelissa kerrotaan, kuinka voit lisätä yksikötestin kattavuuden Maven-sovellukseesi 10 minuutissa.

Näytämme kuinka helppoa se on erinomainen Jacoco-koodikirjastokirjasto.

Esimerkkejä

Kaikki esimerkit ovat peräisin tästä artikkelista.

//johndobie.blogspot.com/2011/11/test-doubles-with-mockito.html

Voit tarkistaa ne täältä

svn co //designbycontract.googlecode.com/svn/trunk/examples/testing/test -... 

Kun Maven 3 on asennettu, voit suorittaa ne tällä komennolla.

mvn puhdas paketti 

Mikä on Jacoco

Jacoco on ilmainen Java-koodikirjastokirjasto. //www.eclemma.org/jacoco/

Käytän sitä, koska se on hyvin helppo lisätä kaiken tyyppisiin koontiversioihin, mukaan lukien ANT ja Maven, ja se on myös erittäin helppo lisätä Java-säilöihin tai erilliseen JVM: ään.

Kuinka se toimii?

Jacoco käyttää tavallista JVM-työkalurajapintaa. //java.sun.com/developer/technicalArticles/J2SE/jvm_ti/

Yksinkertaisesti sanottuna liität Jacoco-agentin JVM: ään, kun se alkaa. Se esiteltiin JDK 5: ssä JVM: ien tarkkailemiseksi ja profiloimiseksi ja Java-luokkien dynaamisen muokkaamiseksi ladattaessa.

Aina kun luokka ladataan, Jacoco voi instrumentoida luokan, jotta se voi nähdä, milloin luokkaa kutsutaan ja mitä rivejä kutsutaan. Näin se kerää kattavuustilastoja. Tämä kaikki tapahtuu lennossa.

Tulostiedosto luodaan oletusarvoisesti, kun JVM lopetetaan.

Voit myös suorittaa agentin palvelintilassa, jonka avulla voit käynnistää tuloksen.

Kuinka liität agentin JVM: ään?

Tämä on hyvin yksinkertainen prosessi. Sinun on määritettävä, missä jacoco-purkki sijaitsee, ja sitten välittää joitain parametreja määritelläksesi, miten agentti suoritetaan.

-javaagent: [oma polkusi / jacocoagent.jar = [vaihtoehto1] = [arvo1], [vaihtoehto2] = [arvo2] 

Tyypillinen juoksu saattaa näyttää tältä

-javaagent: jacoco.jar = destfile = $ {sonar.jacoco.itReportPath}, sisältää = com.dbc. * 

Täydellinen viite löytyy täältä.

//www.eclemma.org/jacoco/trunk/doc/agent.html

Jacoco-tuki Mavenille

Maven-laajennuksen asiakirjat määritellään tässä.

//www.eclemma.org/jacoco/trunk/doc/maven.html

Ensin meidän on lisättävä itse laajennus.

 org.jacoco jacoco-maven-plugin 0.5.5.201112152213 

Voimme sitten määrittää, missä Jacoco-raportit tuotetaan.

 $ {basedir} /target/coverage-reports/jacoco-unit.exec $ {basedir} /target/coverage-reports/jacoco-unit.exec 

Lopuksi meidän on määriteltävä seuraavat 2 suoritusta, jotta agentti suoritetaan ennen testien suorittamista, ja myös sen varmistamiseksi, että jacoco-raporttitehtävä suoritetaan, kun paketti suoritetaan.

  jacoco-alusta valmistelu-agentti jacoco-site -pakettiraportti 

Kaikki tämä yhdessä näkyy tässä

  org.jacoco jacoco-maven-plugin 0.5.5.201112152213 $ {basedir} /target/coverage-reports/jacoco-unit.exec $ {basedir} /target/coverage-reports/jacoco-unit.exec jacoco-alusta valmistelu-agentti jacoco -sivustopakettiraportti org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 

Suorita seuraava komento suorittaaksesi esimerkkejä.

mvn puhdas paketti 

Tulokset julkaistaan ​​/ target / site / jacoco.

Tämän tarinan, "Unit Test Code Coverage With Maven And Jacoco", julkaisi alun perin JavaWorld.