Saltar al contenido

SonarQube no recoge la cobertura de prueba unitaria

Presta atención ya que en esta sección hallarás la solución que buscas.

Solución:

Te faltaban algunas propiedades importantes de la sonda. Aquí tienes una muestra de una de mis compilaciones:

sonar.jdbc.dialect=mssql
sonar.projectKey=projectname
sonar.projectName=Project Name
sonar.projectVersion=1.0
sonar.sources=src
sonar.language=java
sonar.binaries=build/classes
sonar.tests=junit
sonar.dynamicAnalysis=reuseReports
sonar.junit.reportsPath=build/test-reports
sonar.java.coveragePlugin=jacoco
sonar.jacoco.reportPath=build/test-reports/jacoco.exec

El error en la salida de la consola de Jenkins puede ser bastante útil para que la cobertura del código funcione.

La cobertura del proyecto se establece en 0% ya que no hay directorios con clases.
Indica que no ha configurado correctamente la propiedad Sonar.Binaries

No hay información sobre la cobertura por prueba.
Indica que no ha configurado correctamente la propiedad Sonar.Tests

No se recopiló información de cobertura. ¿Quizás olvidó incluir información de depuración en clases compiladas? Indica que la propiedad sonar.binaries se configuró correctamente, pero esos archivos no se compilaron en modo de depuración y deben ser

Basado en https://github.com/SonarSource/sonar-examples/blob/master/projects/tycho/pom.xml, el siguiente POM funciona para mí:


    jacoco
    reuseReports
    $project.basedir/../target/jacoco.exec


    
        
            org.jacoco
            jacoco-maven-plugin
            0.7.0.201403182114
            
                
                    
                        prepare-agent
                    
                
            
            
                $sonar.jacoco.reportPath
            
        
    

  • La configuración del archivo de destino en la ruta del informe garantiza que Sonar lea exactamente el archivo que genera JaCoCo.
  • La ruta del informe debe estar fuera de los directorios de los proyectos para tener en cuenta la cobertura entre proyectos (por ejemplo, en el caso de Tycho, donde la convención es tener proyectos separados para las pruebas).
  • los reuseReports ¡La configuración evita la eliminación del archivo de informe de JaCoCo antes de que se lea! (Desde 4.3, este es el valor predeterminado y está en desuso).

Entonces solo corro

mvn clean install
mvn sonar:sonar

Tuve un problema similar, 0.0% de cobertura y ninguna prueba unitaria cuenta en el panel de Sonar con SonarQube 6.7.2: Maven: 3.5.2, Java: 1.8, Jacoco: Trabajó con 7.0 / 7.9 / 8.0, OS: Windows

Después de mucha lucha para encontrar la solución correcta en el proyecto de múltiples módulos de maven, no como el proyecto de módulo único aquí, debemos decir que elija los informes de jacoco de los módulos individuales y se fusionen en un informe, así que resolvió el problema con esta configuración como mi pom principal se ve igual que:

 
            
            jacoco
            reuseReports
        $project.basedir/../target/jacoco.exec
            java

        

        
            
                
                    
                        org.apache.maven.plugins
                        maven-compiler-plugin
                        
                            1.5
                            1.5
                        
                    

                    
                        org.sonarsource.scanner.maven
                        sonar-maven-plugin
                        3.4.0.905
                    

                    
                        org.jacoco
                        jacoco-maven-plugin
                        0.7.9
                        
                            $sonar.jacoco.reportPath
                            true
                        
                        
                            
                                agent
                                
                                    prepare-agent
                                
                            
                        
                    

                
            
        

He probado algunas otras opciones como jacoco-agregado e incluso creando un submódulo al incluirlo en el pom principal, pero nada realmente funcionó y esto es simple. Veo en los registros está en desuso, pero aún funciona como está y parece que se reemplaza automáticamente en la ejecución o se puede actualizar manualmente para o más reciente. Una vez después de realizar la configuración en cmd, comience con instalación limpia de mvn luego mvn org.jacoco: jacoco-maven-plugin: prepare-agent install (Verifique en la carpeta de destino del proyecto si se creó jacoco.exec) y luego haga mvn sonar: sonar , esto es lo que he probado, por favor avíseme si hay alguna otra mejor solución posible disponible. ¡Espero que esto ayude! Si no es así, envíe su pregunta.

Acuérdate de que tienes la opción de comentar si te fue preciso.

¡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 *