2011-09-20 25 views
6

que tenían la siguiente configuración para mi trabajo Jenkins: Primera limpieza y construcción del proyecto Maven, a continuación, ejecutar las pruebas unitarias y análisis estático: clean install sonar:sonar El problema era que install y sonar:sonar cada corrieron las pruebas unitarias que duplicando eficazmente el tiempo de construcción .¿Cómo solo ejecutar pruebas unitarias una vez cuando se ejecuta "maven clean install" y Sonar?

Lo solucioné cambiando clean install sonar:sonar a clean install -DskipTests y ejecutando Sonar utilizando el plugin Jenkins Sonar. Ahora las pruebas unitarias se ejecutaron solo una vez y el sonar mostró los resultados, pero Jenkins ya no sabía de las pruebas.

Supongo que Jenkins solo está mirando la carpeta de informes infalibles después de compilar, no después de Sonar (que es una acción posterior a la compilación).

Respuesta

11

Primero puede ejecutar clean install -DskipTests y luego agregar un segundo paso de compilación de maven sonar:sonar. Las pruebas (y el análisis completo del sonar) se ejecutarán durante la fase de compilación, y los resultados infalibles pueden ser recopilados por jenkins posteriormente.

2

Como dijiste, Sonar es un paso de compilación de publicaciones. Sonar requiere que la compilación se complete y pase todas sus pruebas antes de que pueda ejecutarse; de ​​lo contrario, las cosas que hace no tienen ningún sentido.

Sonar ejecuta las pruebas con instrumentación (cobertura si no recuerdo mal), que proporciona la cobertura del código para las pruebas.

Por lo tanto, debe realizar la instalación (o al menos compilar & prueba) antes de ejecutar Sonar, y luego Sonar vuelve a ejecutar las pruebas con instrumentos para sus propios fines.

Cuestiones relacionadas