Cobertura Jacoco

Este plugin integra JaCoCo con Wakamiti para generar cobertura de código a partir de la ejecución de casos de prueba.

El modo merge determina si los informes se generan por caso de prueba, para todos los agentes configurados juntos o por host.

NOTA

Cada agente JaCoCo debe estar iniciado en modo tcpserver y escuchando en uno de los endpoints configurados. De lo contrario no será posible volcar la cobertura.



Instalación

Incluye el módulo en la sección correspondiente.

es.iti.wakamiti:jacoco-wakamiti-plugin:2.0.2
<dependency>
  <groupId>es.iti.wakamiti</groupId>
  <artifactId>jacoco-wakamiti-plugin</artifactId>
  <version>2.0.2</version>
</dependency>

Configuración

jacoco.dump.hosts

  • Tipo: string[]
  • Por defecto: localhost:6300

Endpoints de los agentes JaCoCo en formato host:port. Debe indicarse al menos uno. El host debe ser un nombre DNS o una dirección IPv4, y el puerto debe estar entre 1 y 65535. Los nombres de host deben ser únicos sin distinguir mayúsculas de minúsculas cuando merge es HOST.

Ejemplo:

jacoco:
  dump:
    hosts:
      - 192.168.5.6:1234
      - jacoco-agent:6300

jacoco.dump.output

  • Tipo: path
  • Por defecto: .

Directorio de salida para datos de ejecución por escenario con merge: NONE. Se crea cuando es necesario. Con merge: ALL, esta ruta es la base del agregado y genera some/directory.exec; con merge: HOST, genera some/directory.<host>.exec para cada host configurado.

Ejemplo:

jacoco:
  dump:
    output: some/directory

jacoco.dump.retries

  • Tipo: integer
  • Por defecto: 10

Número de reintentos.

Ejemplo:

jacoco:
  dump:
    retries: 3

jacoco.report.xml

  • Tipo: path

Directorio de salida para informes XML por escenario con merge: NONE. Con merge: ALL, esta ruta es la base del agregado y genera some/directory.xml; con merge: HOST, genera some/directory.<host>.xml para cada host configurado. No se generarán informes XML si no se especifica este parámetro.

Ejemplo:

jacoco:
  report:
    xml: some/directory/xml

jacoco.report.csv

  • Tipo: path

Directorio de salida para informes CSV por escenario con merge: NONE. Con merge: ALL, esta ruta es la base del agregado y genera some/directory.csv; con merge: HOST, genera some/directory.<host>.csv para cada host configurado. No se generarán informes CSV si no se especifica este parámetro.

Ejemplo:

jacoco:
  report:
    csv: some/directory/csv

jacoco.report.html

  • Tipo: path

Directorio de salida para el informe HTML agregado final. Con merge: HOST, se genera un directorio llamado <ruta>.<host> para cada host. Se crea cuando es necesario.

Ejemplo:

jacoco:
  report:
    html: some/directory/html

jacoco.report.classes

  • Tipo: path[] required

Directorios raíz existentes que contienen los archivos de clase Java. También se acepta una única ruta. Con merge: HOST, cada informe incluye únicamente las clases presentes en los datos de ejecución de ese host.

Ejemplo:

jacoco:
  report:
    classes:
      - target/classes
      - target/generated-classes

jacoco.report.sources

  • Tipo: path[]

Directorios raíz existentes que contienen los archivos fuente. También se acepta una única ruta.

Ejemplo:

jacoco:
  report:
    sources: 
      - src/main/java

jacoco.report.tabwith

  • Tipo: integer
  • Por defecto: 4

Ancho de la tabulación para las páginas de origen.

Ejemplo:

jacoco:
  report:
    tabwith: 5

jacoco.report.name

  • Tipo: string
  • Por defecto: JaCoCo Coverage Report

Nombre utilizado para este informe.

Ejemplo:

jacoco:
  report:    
    name: Wakamiti coverage report

jacoco.report.merge

  • Tipo: NONE | ALL | HOST
  • Por defecto: NONE

Controla la agrupación de informes. NONE genera artefactos .exec, XML y CSV por caso de prueba; su informe HTML final combina los datos de ejecución de todos los casos. ALL combina los datos de todos los agentes configurados en un único informe .exec, XML, CSV y HTML. HOST genera un conjunto de artefactos agregados por host, usando el host como sufijo de cada ruta configurada. La cobertura de hooks de ciclo de vida se incluye en ALL y HOST, pero no en NONE. Los nombres de host deben ser únicos en HOST, incluso si sus puertos son distintos. Los valores booleanos ya no son compatibles. En HOST, se excluyen las clases sin datos de ejecución de ese host.

Ejemplo:

jacoco:
  report:
    merge: NONE