2011-09-20 10 views
6

ho avuto la seguente configurazione per il mio lavoro Jenkins: Dapprima pulire e costruire il progetto Maven, quindi eseguire i test di unità e di analisi statica: clean install sonar:sonar Il problema era che install e sonar:sonar ogni stato eseguito il test di unità che ha raddoppiato efficacemente il tempo di costruzione .Come eseguire solo i test delle unità una volta quando si esegue "installazione pulita di Maven" e Sonar?

Ho risolto il problema cambiando clean install sonar:sonar in clean install -DskipTests ed eseguendo Sonar utilizzando il plug-in del sonar di Jenkins. Ora i test unitari venivano eseguiti una sola volta e il sonar mostrava i risultati, ma Jenkins non conosceva più i test.

La mia ipotesi è che Jenkins stia guardando solo la cartella surefire-reports dopo la costruzione, non dopo Sonar (che è un'azione post-compilazione).

risposta

11

È possibile eseguire solo clean install -DskipTests e quindi aggiungere un secondo passaggio di generazione di Maven sonar:sonar. I test (e l'analisi completa del sonar) verranno eseguiti durante la fase di costruzione e i risultati di infallibile potranno essere raccolti da jenkins in seguito.

2

Come hai detto, Sonar è un passaggio di post-compilazione. Sonar richiede che la compilazione sia completa e superi tutti i test prima che possa essere eseguita, altrimenti le cose che ha non hanno alcun senso.

Sonar esegue i test con strumentazione (cobertura se non ricordo male), che fornisce la copertura del codice per i test.

Quindi, è necessario installare (o almeno compilare il test &) prima dell'esecuzione di Sonar, quindi Sonar esegue nuovamente i test con gli strumenti per i propri scopi.