lunedì 24 ottobre 2011

Separare code coverage con Maven, Sonar e Jacoco


In questo esempio si espanderà al mio precedente esempio di mantenere l'unità e test di integrazione in pacchetti separati, e spiegare come produrre anche statistiche code coverage.
Per questo io continuo a usare Maven, mentre l'aggiunta di Sonar e Jacoco di fornire il codice coverage.You possibile eseguire l'esempio qui sotto, ma dovrete leggere il primo articolo qui per capirlo. http://johndobie.blogspot.com/ 2011/06/seperating-maven-unit-integration-tests.html

1.1 Esempio Struttura

Qui abbiamo la struttura tipica maven e la nostra nuova cartella \ src \ integrationtest \ java


1,2 eseguire l'esempio

Il codice completo è ospitato presso il codice di google. Utilizzare i seguenti comandi di check it out ed eseguirlo.
2.cd sonar
3.mvn-Psonar, pulirlo installare sonar: sonar
È necessario avere in esecuzione sonar. Istruzioni su l'installazione può essere trovato qui.http://docs.codehaus.org/display/SONAR/Install+Sonar
Vai a sonar l'interfaccia web e cliccare su 'configurare dei widget' per aggiungere IT copertura widget.You dovrà anche aggiungere il plugin Jacoco.
Potete vedere la Jenkins costruire qui:
http://ec2-75-101-221-43.compute-1.amazonaws.com:8080/job/maven-sonar-jaccoco/
Potete vedere il Sonar costruire qui
http://ec2-75-101-221-43.compute-1.amazonaws.com:9000/dashboard/index/1

1,3 I risultati di eseguire l'esempio

  • I test nella struttura standard di prova maven vengono eseguiti durante la fase di unità di prova come al solito.
  • I test nella integrationtest directory sono eseguiti durante la fase di test di integrazione.
  • Le classi di test ed i risultati vengono inseriti in una directory separata integrationtest in target


I rapporti di prova copertura jacoco sono posti in / target / copertura-report directory


Nel Sonar, la copertura unit test è indicato in una widget e la copertura di test di integrazione in un altro.



2.0 Come funziona?

I passi fondamentali sono i seguenti. I dettagli di ciascuno sono sotto.

  • Eseguire il test di integrazione del ciclo di vita maven con copertura Jacoco abilitato per i test unitari e di integrazione.
  • Esegui Sonar che punta ai risultati di copertura.
  • Mettere tutto in un profilo in modo che possa essere usato comodamente.

2,1 L'esecuzione del test con Jacoco

Prima si definisce la directory per i file di copertura jacoco.
01.coverage.reports.dir >
02.basedir $ {} / target / copertura-report
03.</ coverage.reports.dir >
04.sonar.jacoco.reportPath >
05.coverage.reports.dir $ {} / jacoco-unit.exec
06.</ sonar.jacoco.reportPath >
07.sonar.jacoco.itReportPath >
08.coverage.reports.dir $ {} / jacoco-it.exec
09.</ sonar.jacoco.itReportPath >
10.sonar.jacoco.jar >
11.basedir $ {} / lib / jacocoagent.jar
12.</ sonar.jacoco.jar >
Allora iniziamo i test di unità eseguendo lo standard il plugin infallibile con l'agente Jacoco che punta a $ {sonar.jacoco.reportPath} . Questo viene utilizzato per memorizzare l'unità di prova risultati code coverage.
01.plug-in >
02.groupId > org.apache.maven.plugins </ groupId >
03.artifactId > maven-sicuro-plugin </ artifactId >
04.versione > 2.7.2 </ version >
05.configurazione >
06.> < argLine >         
07.-javaagent: $ {} = sonar.jacoco.jar destfile = $ {} sonar.jacoco.reportPath      
08.</ argLine > </ >
09.prova >**/*. java </ prova >
10.</ configurazione >
11.</ plug >
Per i test di integrazione che usiamo il plugin prova d'errore e punto l'agente Jacoco a $ {sonar.jacoco. itReportPath} .Questo viene utilizzato per memorizzare i risultati delle prove di integrazione code coverage.
01.plug-in >
02.artifactId > maven fail-safe-plugin </ artifactId >
03.versione > 2.8 </ version >
04.configurazione >        
05.argLine >
06.-javaagent: $ {} = sonar.jacoco.jar destfile = $ {} sonar.jacoco.itReportPath
07.</ argLine >
08.testClassesDirectory >
09.integrationOutputDirectory $ {}
10.</ testClassesDirectory >
11.reportsDirectory >
12.integrationOutputDirectory $ {} / failsafe-report
13.</ reportsDirectory >
14.prova >**/*. java </ prova >
15.additionalClasspathElements >
16.additionalClasspathElement >
17.integrationSourceDirectory $ {} / risorse </ additionalClasspathElement >
18.</ additionalClasspathElements >
19.</ configurazione >
20.esecuzioni >
21.esecuzione >
22.obiettivi >
23.meta > integrazione-test </ meta >
24.</ obiettivi >
25.</ esecuzione >
26.</ esecuzioni >
27.</ plug >
Quando questi vengono eseguiti produrrà i seguenti 2 file di copertura.


Sonar esecuzione
Usiamo il sonar standard: bersaglio sonar però dobbiamo prima compilare ed eseguire i nostri test. Questo farà sì che l'unità e test di integrazione per l'esecuzione come descritto sopra.
Il seguente parametro indica Sonar di utilizzare jacoco come il plugin di default di copertura del codice
1.sonar.core.codeCoveragePlugin > jacoco </ sonar.core.codeCoveragePlugin >

Abbiamo poi specificare per Sonar di ri-utilizzare i file creati copertura.
1.sonar.dynamicAnalysis > reuseReports </ sonar.dynamicAnalysis >
Siamo quindi eseguire l'intero processo eseguendo il comando seguente Maven
1.mvn-Psonar, pulirlo installare sonar: sonar
Questo produce i risultati di cui sopra nella sezione 1.3. Risultati dell'esecuzione della Esempi.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.