Hoy vamos a aprender cómo pasar y mostrar el número de tests que se han cubierto en sonarque.

Para React con Vite:
Primero instalamos:
npm install -D vitest-sonar-reporter
Ahora vamos al archivo vitest.config.ts
Añadimos:
reporters: ['default', 'vitest-sonar-reporter'], // JUnit reporter para generar informes de pruebas outputFile: 'test-results/test-results.xml', // Ruta del XML que leerá SonarQube
Dentro de tests: {
Y dentro de nuestro archivo sonar-project.properties
sonar.testExecutionReportPaths=test-results/test-results.xml
También debemos indicar la ruta correcta dónde tenemos los tests:
sonar.tests=tests
Con esto ya solo tendremos que ejecutar sonar scanner para que funcione.
Importante, asegurarse de que los archivos de tests no están ignorados:
sonar.exclusions=.vscode/**
Para React Native con Jest
Primero instalamos:
npm install --save-dev jest-sonar
Ahora vamos al archivo vitest.config.ts
Añadimos:
reporters: [ "default", ["jest-sonar", { outputDirectory: "test-results", outputName: "test-results.xml", }] ],
Y dentro de nuestro archivo sonar-project.properties
sonar.testExecutionReportPaths=test-results/test-results.xml
También debemos indicar la ruta correcta dónde tenemos los tests:
sonar.tests=tests
Con esto ya solo tendremos que ejecutar sonar scanner para que funcione.
Importante, asegurarse de que los archivos de tests no están ignorados:
sonar.exclusions=.vscode/**
Para python con Pytest
Ejecutamos el comando de Pytest con este parámetro:
--junitxml=xunit-reports/xunit-result.xml
Y dentro de nuestro archivo sonar-project.properties
sonar.junit.reportPaths=xunit-reports/xunit-result.xml
También debemos indicar la ruta correcta dónde tenemos los tests:
sonar.tests=tests
Con esto ya solo tendremos que ejecutar sonar scanner para que funcione.
Importante, asegurarse de que los archivos de tests no están ignorados:
sonar.exclusions=.vscode/**
*Importante: el achivo generado debe tener la estructura de <testsuite> <testcase>
<testsuite name="...." errors="0" failures="0" skipped="0" timestamp="2025-05-21T09:02:49" time="5.575" tests="4"> <testcase>...
También os recomiendo añadir la carpeta del reporte dentro de .gitignore.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.