Saltar al contenido

Gradle salta a JaCoCo durante la prueba

Haz todo lo posible por comprender el código bien antes de adaptarlo a tu proyecto y si ttienes algo que aportar puedes compartirlo con nosotros.

Solución:

Descubrí que si realiza el complemento de aplicación, la instrumentación de jacoco se lleva a cabo incluso si ha realizado dependOn.remove como se indica en la respuesta aceptada. Puede notar que la instrumentación todavía está ocurriendo cuando se crea un archivo llamado build/jacoco/test.exec incluso si los informes de jacoco no se crean.

Tuve que extraer el complemento jacoco, aplicarlo a un archivo .gradle separado e incluirlo condicionalmente como:

if (jacocoEnabled.toBoolean() )  
  project.logger.lifecycle('applying jacoco build file')
  apply from: "jacoco.gradle"

Entonces mi archivo jacoco.gradle se ve así:

apply plugin: 'java'
apply plugin: 'jacoco'


test 
  jacoco 
    append = false
    destinationFile = file("$buildDir/jacoco/test.exec")
  


  jacocoTestReport 
      reports 
          xml.enabled true
          xml.destination file("$buildDir$jacocoXMLDestination")
      
  

  test.finalizedBy jacocoTestReport

Esto llevó mi tiempo de compilación de 4 minutos a 3 minutos, lo que proporcionó algunos ahorros.

Editar


Después de leer la segunda respuesta y probarla yo mismo, sugiero y aprecio mucho la publicación de blog a continuación, ya que es true la instrumentación aún ocurre incluso después de deshabilitar o eliminar las tareas.

https://poetengineer.postach.io/post/how-to-conditionally-enable-disable-jacoco-in-gradle-build


Si se ejecuta en Jenkins, el error 137 podría ser un problema de falta de memoria.

Si se ejecuta en Jenkins, intente ampliar la memoria y consulte este enlace.

Me sale OutOfMemoryError

Tareas de Jacoco:

jacocoTestReport    -   JacocoReport    Generates code coverage report for the test task.
jacocoTestCoverageVerification  -   JacocoCoverageVerification  Verifies code coverage metrics based on specified rules for the test task.

Para saber qué tareas tienen qué dependencias puedes hacer

gradle tasks --all

Para excluir la tarea con cmd puede

gradle test -x taskToExclude

Programáticamente, puede usar un gráfico de tareas para excluirlo

gradle.taskGraph.useFilter  task -> yourstuff

o simplemente elimínelo de las dependencias de tareas de prueba

test.dependsOn.remove("jacocoTestReport")
test.dependsOn.remove("jacocoTestCoverageVerification")

Recurso adicional que vale la pena consultar: https://docs.gradle.org/current/userguide/jacoco_plugin.html

Reseñas y valoraciones

Te invitamos a reafirmar nuestra publicación poniendo un comentario y puntuándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *