2011-07-28 35 views
8

Quiero medir la cobertura del código de las pruebas de integración utilizando las herramientas JaCoCo y Sonar.Obtener la cobertura del código de mi aplicación utilizando el agente JaCoCo Java en Tomcat

Para eso, inicio mi Tomcat 5.5 configurado con el agente JaCoCo para obtener el archivo de volcado de JaCoCo.

Por lo tanto, me puse la JAVA_OPTS para ello:

set JAVA_OPTS=-Xrs -XX:MaxPermSize=256m -XX:PermSize=256m -XX:NewRatio=3 -Xms512m -Xmx1024m -XX:+UseParallelGC -javaagent:C:\dev\servers\jacoco-agent.jar=destfile=C:\dev\servers\jacoco.exec,append=true,includes=my.application.* 

Cuando comienzo Tomcat, se genera el archivo C:\dev\servers\jacoco.exec, pero no se llena de datos.

¿Hay algo que olvidé en la configuración de mi servidor?

Atentamente.

+0

Sí, [si jacoco está configurado para iniciar sesión en un Archivo Destino, está escrito en el apagado] (http://car-online.fr/en/blog/fabien_duchene /2013-05-03-Java%20Code%20Coverage%20in%20Tomcat%20JSP%20applications,%20e.g.,%20WebGoat%20with%20Jacoco/) –

Respuesta

4

Por lo que recuerdo, el archivo se llenaría durante el cierre de Tomcat.

+0

Bien, lo intentaré esta semana y volveré con usted. – romaintaz

+0

Si no desea cerrar su servidor, como nosotros, Cobertura tiene una aplicación de coberturaFlush que se puede llamar usando http: // host: port/coberturaFlush/flushCobertura. Asegúrese de que su tarro de cobertura esté cargado por el mismo cargador de clases. – Dormouse

8

Me doy cuenta de que puede no haber sido una opción hace 2 años cuando se hizo esta pregunta, pero actualmente tiene otras opciones disponibles para recuperar los datos de ejecución de JaCoCo sin cerrar Tomcat (o cualquier JVM instrumentada con el agente JaCoCo java)

Primero echar un vistazo a la documentación actual para el Agente Java JaCoCo: http://www.eclemma.org/jacoco/trunk/doc/agent.html

Usted puede utilizar la salida = tcpserver opción en el agente JaCoCo tener el agente de Java escucha para los comandos. Puede establecer address = * para que el tcpserver escuche en todas las interfaces, y puede establecer el argumento port = 6300 para elegir el puerto donde debe escuchar el tcpserver.

A través del tcpserver, el agente JaCoCo java puede ser instruido para que le envíe los datos cada vez que lo solicite.

Si su JVM está actualmente exponiendo JMX, tiene otra opción que puede utilizar sin abrir puertos adicionales. Al establecer la opción jmx = true, el agente Java JaCoCo expone un MBean con el que puede interactuar.

Si está usando maven, puede echar un vistazo al plugin que recientemente escribí para recopilar datos de JaCoCo desde JVM remotas mientras se ejecuta. El proyecto para el plugin se encuentra en:
https://github.com/mattcj/jacocotogo

Cuestiones relacionadas