es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nx, Angular, Jest y Sonar

Estoy buscando una receta para usar con un Espacio de trabajo Nx (13.4.1) y Angular (13.1) utilizando Jest para ejecutar pruebas unitarias. Deseo generar y publicar resultados de ejecución de pruebas unitarias e informes de cobertura en el servidor de SonarQube de forma individual para cada biblioteca.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Receta para generar y publicar resultados de ejecución de pruebas unitarias e informes de cobertura en SonarQube usando Nx, Angular y Jest

    Para generar y publicar resultados de pruebas unitarias e informes de cobertura en el servidor de SonarQube para cada biblioteca en un espacio de trabajo de Nx Angular usando Jest, aquí están los pasos que puedes seguir:

    1. Primero, configura tu entorno instalando las dependencias necesarias. Necesitarás:
      • Nx (versión 13.4.1 o posterior)
      • Angular (versión 13.1 o posterior)
      • Jest (versión 27.0.6 o posterior)
      • SonarQube (versión 9.2 o posterior)
      • sonarqube-scanner (versión 4.5.0.2216 o posterior)
    2. Crea un nuevo proyecto de SonarQube para tu espacio de trabajo de Nx.
    3. Para cada biblioteca en tu espacio de trabajo de la que desees generar resultados de pruebas unitarias e informes de cobertura, crea un nuevo proyecto de SonarQube siguiendo los pasos en la documentación de SonarQube.

    4. Actualiza tu archivo de configuración del espacio de trabajo (workspace.json) para especificar la configuración de Jest para cada biblioteca. En particular, deberás establecer la propiedad reporters para incluir el reportero jest-sonar-reporter, así:

      {
       "projects": {
         "my-lib": {
           "architect": {
             "test": {
               "builder": "@nrwl/jest:jest",
               "options": {
                 "tsConfig": "my-lib/tsconfig.spec.json",
                 "reporters": [
                   "default",
                   ["jest-sonar-reporter", {
                     "outputDirectory": "coverage/my-lib",
                     "outputName": "test-results.xml"
                   }]
                 ],
                 "coverageReporters": [
                   "text",
                   "lcov",
                   "cobertura"
                 ],
                 "testPathIgnorePatterns": [
                   "<rootdir>/dist/"
                 ]
               }
             }
           }
         }
       }
      }
      

      Esta configuración permite que Jest genere resultados de pruebas unitarias en formato xunit, los envíe a un archivo llamado test-results.xml, y coloque ese archivo en el directorio coverage/my-lib.

    5. Construye tu espacio de trabajo ejecutando nx build.

    6. Ejecuta todas las pruebas unitarias en tu espacio de trabajo ejecutando nx test.

    7. Una vez que las pruebas hayan terminado de ejecutarse, navega al directorio coverage/my-lib de cada biblioteca para encontrar el archivo test-results.xml.

    8. Usa la herramienta de línea de comandos sonarqube-scanner para analizar los resultados de las pruebas y enviarlos al proyecto de SonarQube para esa biblioteca. Por ejemplo:

      sonar-scanner \
       -Dsonar.projectKey=my-lib \
       -Dsonar.sources=my-lib/src \
       -Dsonar.tests=my-lib/src \
       -Dsonar.test.inclusions=**/*.spec.* \
       -Dsonar.javascript.lcov.reportPaths=coverage/my-lib/lcov.info \
       -Dsonar.testExecutionReportPaths=coverage/my-lib/test-results.xml
      

      Ten en cuenta que deberás ajustar las rutas y las claves de proyecto para que coincidan con tu configuración de espacio de trabajo específica.

    9. Repite los pasos 4-8 para cada biblioteca en tu espacio de trabajo de la que desees generar resultados de pruebas unitarias e informes de cobertura.

    Siguiendo estos pasos, deberías poder generar y publicar fácilmente resultados de ejecución de pruebas unitarias e informes de cobertura en el servidor de SonarQube de forma individual para cada biblioteca en tu espacio de trabajo de Nx Angular usando Jest.

Comments are closed.