Preguntas más frecuentes
Preguntas desde lo alto de mi cabeza desde entonces me volví loco con jacoco.
Mi servidor de aplicaciones (jBoss, Glassfish ...) ubicado en Iraq, Siria, lo que sea ... ¿Es posible obtener una cobertura de varios módulos al ejecutar pruebas de integración? Jenkins y Sonar también están en diferentes servidores.
Si. Debe usar el agente jacoco que se ejecuta en modo output=tcpserver
jacoco ant lib. Básicamente dos jar
s. Esto te dará un 99% de éxito.
¿Cómo funciona el agente jacocó?
Anexas una cuerda
-javaagent:[your_path]/jacocoagent.jar=destfile=/jacoco.exec,output=tcpserver,address=*
a su servidor de aplicaciones JAVA_OPTS y reinícielo. En esta cadena solo [your_path]
hay que reemplazarla por la ruta a jacocoagent.jar, almacenada (¡almacénela!) En su VM donde se ejecuta el servidor de aplicaciones. Desde el momento en que inicie el servidor de aplicaciones, todas las aplicaciones que se implementen serán monitoreadas dinámicamente y su actividad (es decir, el uso del código) estará lista para que usted obtenga en formato jacocos .exec por solicitud tcl.
¿Podría restablecer el agente de jacoco para comenzar a recopilar datos de ejecución solo desde el momento en que comienza mi prueba?
Sí, para ese propósito necesita el script jacocoant.jar y ant build ubicado en su espacio de trabajo jenkins.
Entonces, ¿básicamente lo que necesito de http://www.eclemma.org/jacoco/ es jacocoant.jar ubicado en mi espacio de trabajo de jenkins y jacocoagent.jar ubicado en la máquina virtual de mi servidor de aplicaciones?
Así es.
No quiero usar hormiga, he oído que el complemento jacoco maven también puede hacer todas las cosas.
Eso no está bien, el complemento jacoco maven puede recopilar datos de pruebas unitarias y algunos datos de pruebas de integración (consulte Arquillian Jacoco ), pero si tiene, por ejemplo, las pruebas seguras como una compilación separada en jenkins y desea mostrar una cobertura de varios módulos, puedo No veo cómo el complemento Maven puede ayudarte.
¿Qué produce exactamente el agente jacocó?
Solo datos de cobertura en .exec
formato. Sonar entonces puede leerlo.
¿Necesita saber jacoco dónde están ubicadas mis clases de Java?
No, el sonar sí, pero no el jacoco. Cuando haces mvn sonar:sonar
camino a las clases entra en juego.
¿Y qué hay del guión de hormigas?
Tiene que presentarse en su espacio de trabajo jenkins. El guión de mi hormiga, lo llamé jacoco.xml
así:
<project name="Jacoco library to collect code coverage remotely" xmlns:jacoco="antlib:org.jacoco.ant">
<property name="jacoco.port" value="6300"/>
<property name="jacocoReportFile" location="${workspace}/it-jacoco.exec"/>
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${workspace}/tools/jacoco/jacocoant.jar"/>
</taskdef>
<target name="jacocoReport">
<jacoco:dump address="${jacoco.host}" port="${jacoco.port}" dump="true" reset="true" destfile="${jacocoReportFile}" append="false"/>
</target>
<target name="jacocoReset">
<jacoco:dump address="${jacoco.host}" port="${jacoco.port}" reset="true" destfile="${jacocoReportFile}" append="false"/>
<delete file="${jacocoReportFile}"/>
</target>
</project>
Dos parámetros obligatorios que debe pasar al invocar este script,
-Dworkspace=$WORKSPACE
úselo para señalar su espacio de trabajo jenkins y -Djacoco.host=yourappserver.com
host sinhttp://
Observe también que puse mi jacocoant.jar
en $ {workspace} /tools/jacoco/jacocoant.jar
¿Qué debería hacer después?
¿Comenzaste tu servidor de aplicaciones con jacocoagent.jar?
¿Puso ant script y jacocoant.jar en su espacio de trabajo de jenkins?
En caso afirmativo, el último paso es configurar una compilación jenkins. Aquí está la estrategia:
- Invoque el objetivo ant
jacocoReset
para restablecer todos los datos recopilados previamente.
- Ejecute sus pruebas
- Invocar hormiga objetivo
jacocoReport
para obtener informe
Si todo está bien, verá it-jacoco.exec
en su espacio de trabajo de compilación.
Mire la captura de pantalla, también la ant
instalé en mi espacio de trabajo en $WORKSPACE/tools/ant
dir, pero puede usar una que esté instalada en su jenkins.
¿Cómo impulsar este informe en sonar?
Maven sonar:sonar
hará el trabajo (no olvide configurarlo), apúntelo a pom.xml principal para que se ejecute en todos los módulos. Use el sonar.jacoco.itReportPath=$WORKSPACE/it-jacoco.exec
parámetro para indicarle al sonar dónde se encuentra su informe de prueba de integración. Cada vez que analizará nuevas clases de módulos, buscará información sobre la cobertura en it-jacoco.exec
.
Ya tengo jacoco.exec en mi directorio `target`,` mvn sonar: sonar` lo ignora / elimina
De manera predeterminada mvn sonar:sonar
, clean
elimina y elimina su directorio de destino, use sonar.dynamicAnalysis=reuseReports
para evitarlo.