Hace poco me encontré con un problema bastante común al trabajar con proyectos en Spring Boot y SonarCloud: la cobertura de pruebas no se estaba reportando correctamente. Aunque las pruebas se ejecutaban sin errores, en SonarCloud la cobertura aparecía como si fuera 0%. 🤯

Después de investigar y probar diferentes configuraciones, logré que todo funcionara. Aquí te comparto lo que hice, por si te sirve.


1. Agregar la dependencia de mockito-inline

Uno de los problemas que tuve al usar Mockito fue con clases finales o métodos estáticos. Para solucionarlo, agregué esta dependencia en el archivo pom.xml:

org.mockito
    mockito-inline
    5.2.0
    test

2. Configurar Jacoco correctamente

El plugin de Jacoco debe estar bien configurado para generar el archivo jacoco.xml, que es el que SonarCloud usa para calcular la cobertura. Esta fue la configuración que usé en el pom.xml:

org.jacoco
    jacoco-maven-plugin
    0.8.8
    
        
            prepare-agent
            
                prepare-agent
            
            
                ${project.build.directory}/jacoco.exec
                surefireArgLine
            
        
        
            report
            test
            
                report
            
            
                
                    XML

También fue necesario configurar el plugin de Surefire para que reciba los argumentos necesarios:

org.apache.maven.plugins
    maven-surefire-plugin
    
        @{surefireArgLine} -Xshare:off

3. Configurar SonarCloud

Para que SonarCloud encuentre el archivo generado por Jacoco, es necesario agregar la siguiente ruta en su configuración:

sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml

Puedes hacer esto de dos formas:

  • En el archivo sonar-project.properties (si lo estás usando).
  • O directamente en la configuración del proyecto en la web de SonarCloud:
  1. Ve a tu proyecto en SonarCloud.
  2. Abre Administration > General Settings > JaCoCo.
  3. En el campo "Path to XML report", coloca:
target/site/jacoco/jacoco.xml

✅ Resultado

Después de aplicar estas configuraciones y ejecutar:

mvn clean verify

El reporte de cobertura fue generado correctamente y SonarCloud empezó a reconocer la cobertura real de las pruebas. 🎉


📝 Conclusión

No siempre es obvio cómo conectar bien Jacoco con SonarCloud en un proyecto Spring Boot, especialmente si estás empezando. Espero que este post te haya ayudado a evitar horas de prueba y error.