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.
http://ec2-75-101-221-43.compute-1.amazonaws.com:8080/job/maven-sonar-jaccoco/
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.
<
b
> <
argLine
>
07.
-javaagent: $ {} = sonar.jacoco.jar destfile = $ {} sonar.jacoco.reportPath
08.
</
argLine
> </
b
>
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.