2011-09-20 17 views
6

miałem następującą konfigurację dla mojej pracy Jenkins: najpierw zrobić porządek i budowania projektu maven, a następnie uruchomić testy jednostkowe i analizy statycznej: clean install sonar:sonar Problem polegał na tym, że install i sonar:sonar każdy prowadził testy jednostkowe, które skutecznie podwoiła czas budowy .Jak uruchomić testy jednostkowe tylko raz przy uruchomieniu "maven clean install" i sonaru?

Naprawiłem to zmieniając clean install sonar:sonar na clean install -DskipTests i uruchamiając Sonar za pomocą wtyczki sonaru Jenkins. Teraz testy jednostkowe przebiegły tylko raz, a sonar pokazał wyniki, ale Jenkins już nie wiedział o testach.

Domyślam się, że Jenkins patrzy tylko na folder meldunków surefire po zbudowaniu, a nie po sonarze (co jest działaniem po instalacji).

Odpowiedz

11

Najpierw wystarczy uruchomić clean install -DskipTests, a następnie dodać drugi krok budowania maven sonar:sonar. Testy (i kompletna analiza sonarowa) będą przeprowadzane podczas fazy budowy, a wyniki murfire będą mogły być później zebrane przez jenkins.

2

Tak jak powiedziałeś, Sonar jest krokiem kompilacyjnym. Sonar wymaga, aby kompilacja była kompletna i zdała wszystkie testy zanim będzie mogła działać, w przeciwnym razie rzeczy, które robi, nie mają żadnego sensu.

Sonar przeprowadza testy z oprzyrządowaniem (kobrura, jeśli dobrze pamiętam), co daje zakres kodu do testów.

Musisz więc zainstalować (lub przynajmniej skompilować test &) przed uruchomieniem sonaru, a następnie Sonar powtórzy testy za pomocą oprzyrządowania do własnych celów.

Powiązane problemy