Maven - Jak skompilować testy bez ich uruchamiania?

128

Czy w Maven można skompilować testy bez ich uruchamiania? Chcę używać IDE do uruchamiania określonych testów, a nie wszystkich.

user373201
źródło
8
Prawdopodobnie powinieneś albo edytować pytanie, albo zmienić zaakceptowaną odpowiedź.
Chiranjib

Odpowiedzi:

29

możesz spróbować użyć parametru -DskipTests

Bibliografia:

lweller
źródło
W netbeanach właśnie to robiłem. Widzę następujący mvn -Dmaven.test.skip = true -Dnetbeans.execution = prawdziwa czysta instalacja, a następnie widzę następujące
user373201
[kompilator: testCompile] Brak kompilacji źródeł testowych [surefire: test] Testy są pomijane. Przynajmniej użycie netbeans wygląda tak, że jeśli testy są pomijane, nie kompiluje źródeł testowych
user373201
1
nieważne, chociaż dzienniki tak mówią, nadal wydaje się, że kompiluje pliki testowe.
user373201
34
prowadzi to do całkowitego pominięcia testów: wykonywania i kompilacji, patrz poprawna odpowiedź poniżej: test-compile. Używam go z mvn clean compile test-compile w Eclipse
Yashima
3
@Yashima, masz rację, ta odpowiedź nie jest taka mądra ... zaakceptuj odpowiedź poniżej, więc możesz ją usunąć
lweller
334

A co z test-compilefazą cyklu życia? Nie wymaga żadnego pomijania testu, ponieważ występuje przed testfazą. To znaczy,

$ mvn test-compile

I zrobione.

Wprowadzenie do cyklu życia kompilacji wyjaśnia dalej.

RonU
źródło
7
Właśnie tego potrzebowałem, dzięki. Nie wiem o oryginalnym pytającym; ale chciałem skompilować testy, a następnie uruchomić je z oddzielnym testerem.
Mike Miller
30

Aby po prostu skompilować testy i kod bez ich uruchamiania, po prostu wykonaj:

mvn test-compile
pomarańczowy 77
źródło
7
Myślę, że test-kompilacja obejmuje kompilację
Whimusical
zgadzam się z @Whimusical. Ponadto spowoduje to dwukrotne uruchomienie celu kompilacji.
Gabriel Petrovay
26

Realizując cel, który będzie obejmował fazę testowania (np. Pakiet), możesz zrobić dwie rzeczy:

  • Użyj polecenia mvn -DskipTests=true package. Spowoduje to skompilowanie wszystkich testów, ale ich nie uruchomi.
  • Lub mvn -Dmaven.test.skip=true package. To nie skompiluje ani nie uruchomi gałęzi testowej.
Martins
źródło
3

Alternatywnie możesz skorzystać z maven.test.skip.execopcji.

mvn -Dmaven.test.skip.exec=true

Maven skompiluje testy bez ich uruchamiania. Używam tej opcji regularnie we wszystkich moich projektach.

Stephan
źródło
1

Jeśli naprawdę chcesz skompilować tylko testy (pomiń wszystkie inne fazy, takie jak compile), to wystarczy

mvn org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile

Zobacz powiązania wtyczek z domyślnym cyklem życia .

schnatterer
źródło
0

Jeśli masz plik settings.xml, możesz również użyć

<maven.test.skip>true</maven.test.skip>
menapole
źródło
5
Nigdy nie powinieneś tego robić. Jeśli potrzebujesz, ustaw go w wierszu poleceń, ale nigdy na stałe.
Sean Patrick Floyd
13
Nigdy nie powiedziałem, że powinieneś lub nie powinieneś tego robić. Po prostu dostarczam wiedzy o opcji.
menapole
4
To powoduje, że maven również nie kompiluje testów.
Mike Miller
3
@Sean Patrick Floyd: dlaczego nie? NIE jest to trwałe, oznaczałoby to ustawienie go w pom.xml.
Balázs Németh