Pakiet Maven / instalacja bez testu (pomiń testy)

343

Próbuję spakować mój projekt. Ale automatycznie uruchamia testy poprzedzające wykonanie pakowania. Testy wstawiają część zawartości do bazy danych. Nie tego chcę, muszę unikać uruchamiania testów podczas pakowania aplikacji. Czy ktoś wie, jak uruchomić pakiet bez testu?

vks
źródło
13
Test jednostkowy powinien składać się z 4 następujących etapów: inicjalizacja, test, weryfikacja i porzucenie. Być może powinieneś dostosować swoje testy i dodać odpowiednie porzucenie / czyszczenie bazy danych lub użyć osobnej instancji bazy danych, nie spakowanej z plikiem jar, do uruchomienia testów.
Marc-Christian Schulze,
Wygląda na to, że twoje testy są „ciężkie”, więc nie chcesz ich wykonywać. Ale to zła praktyka. Może niektóre frameworki jako DBUnit mogą ci pomóc? Czy możesz cofnąć zmiany w bazie danych pod koniec testu?
Mickael Marrache

Odpowiedzi:

575

Uruchom maven z

mvn package -Dmaven.test.skip=true 
Giorgos Dimtsas
źródło
1
dzięki za twoją natychmiastową odpowiedź, uruchamiam się z Eclipse, gdzie dodałem polecenie -Dmaven.test.skip = true?
vks
10
Nigdy nie uruchomiłem mvn z zaćmienia, ale w oknie Uruchom konfigurację, w którym konfigurujesz cele i profile mavena, jest pole wyboru „Pomiń test”. Może to załatwi sprawę.
Giorgos Dimtsas,
9
zgodnie z dokumentacją , która pominie kompilację oraz wykonanie. Możesz użyć opcji -DskipTests, aby po prostu pominąć wykonanie. Ten post zawiera również ostrzeżenia o tym, z którymi wersjami możesz używać każdej flagi
JonnyRaa
1
Wielkie dzięki, kiedyś to robiłem używając, -DskipTestsale to już nie działa, jakiś pomysł dlaczego?
sam
7
Uwaga: dokumentacja wtyczki Maven Surefire i wtyczki Maven Failsafe sugeruje, że ustawienie skipTestsjest lepsze niż ustawienie maven.test.skip.
Filip Bártek
172

Wystarczy podać polecenie wymienione poniżej, które zignoruje wykonanie przypadków testowych,

mvn package -DskipTests
Jayakumar J
źródło
4
dla mnie to by nie działało. Zamiast tego musiałem użyć zaakceptowanego rozwiązania
Sebas
1
-DskipTestsnie działało dla mnie, gdy używałemmvn clean install -DskipTests
Vishrant
1
Jest częściowo w porządku, ponieważ nie wykona testu, ALE spowoduje uruchomienie klas testowych .....
Antoniossss,
Dla obserwujących -DskipTestsjest taki sam, jak -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 i tak, kompiluje testy i nie uruchamia ich (podczas gdy -Dmaven.test.skip=trueich nie kompiluje)
rogerdpack
47

możesz dodać tę konfigurację wtyczek do pom, jeśli nie chcesz ustawiać arg wiersza poleceń:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>
smp7d
źródło
3
Przy tej konfiguracji nie można już uruchamiać testów z wiersza polecenia.
Emmanuel Bourg
1
@EmmanuelBourg Można temu zaradzić, postępując zgodnie ze wskazówkami w tym przykładzie maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d 18'12
41

Zauważ, że -Dmaven.test.skip uniemożliwia Mavenowi zbudowanie artefaktu słoika testowego.

Jeśli chcesz pominąć testy, ale utworzyć artefakty zgodnie z normalną wersją kompilacji:

-Dmaven.test.skip.exec
Chris Beach
źródło
1
To była odpowiedź, której szukałem, działa dobrze. Dzięki.
Binita Bharati,
Jak do diabła mam to pamiętać? Dlaczego nie stworzyć prostego oczywistego i zapadającego w pamięć aliasu, takiego jak „skipTests”?
TheRealChx101
32

Jeśli próbujesz tego w programie Windows Powershell, pojawi się ten błąd:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

Powodem tego jest to, że w PowerShell „ -” ma specjalne znaczenie i powoduje problemy z maven.

Rozwiązaniem jest dodanie go do tyłu (`), tak jak to ...

mvn `-Dmaven.test.skip=true install 

Odniesienie: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/

Rosdi Kasim
źródło
1
Miałem ten sam problem i to dla mnie rozwiązało. Dzięki.
nsof
26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

to także sposób na dodanie pliku pom

vimal krishna
źródło
18

Możesz przekazać maven.test.skipflagę jako argument JVM, aby pominąć uruchomione testy, gdy uruchomiona jest faza pakietu (i poprzednie w domyślnym cyklu życia):

mvn package -Dmaven.test.skip=true

Możesz także przekazać skipTestssamą flagę do pliku wykonywalnego mvn. Jeżeli chcesz dołączyć tę informację w swojej POM, można utworzyć nowy profil, w którym można skonfigurować maven-surefire-plugin, aby przejść testy .

Vineet Reynolds
źródło
17

Musisz tylko podać

-Dmaven.test.skip

Nie musisz już dołączać =true.

Adriaan Koster
źródło
13

W Inllij IDEA istnieje również możliwość pominięcia celu testu.

wprowadź opis zdjęcia tutaj

Duszmantha
źródło
11

Odpowiadając na stare i zaakceptowane pytanie tutaj. Możesz dodać to do pliku pom.xml, jeśli chcesz uniknąć ciągłego przekazywania argumentów wiersza poleceń:

  <properties>
    <skipTests>true</skipTests>
  </properties>
anubhava
źródło
11

Możesz dodać jedno -DskipTestslub -Dmaven.test.skip=truedowolne mvnpolecenie do pominięcia testów. W twoim przypadku byłoby tak jak poniżej:

mvn package -DskipTests

LUB

mvn package -Dmaven.test.skip=true
Sahil Chhabra
źródło
5

właśnie mvn clean install -DskipTests

Ravinda lakshan
źródło
4

Testy powinny zawsze [1] uruchamiać się przed pakietem. Jeśli musisz wyłączyć testy, robisz coś złego. Innymi słowy, próbujesz rozwiązać zły problem. Dowiedz się, na czym polega Twój problem, i zadaj to pytanie. Wygląda na to, że jest to związane z bazą danych.

[1] Możesz pominąć testy, jeśli chcesz szybko wygenerować artefakt do użytku lokalnego, na potrzeby programowania, ale ogólnie rzecz biorąc, tworzenie artefaktu powinno zawsze przebiegać pomyślnie.

Ryan Stewart
źródło
Mam podobny problem: moje aplikacje zawierają websocket. Kiedy uruchamiam mvn clean install, kończę w niekończącej się serii testów. Zanim wymusiłem zamknięcie, proces trwał 3 godziny, a drukowane wiadomości dotyczyły tylko Websocket. Czy możesz sprawdzić mój problem, aby zobaczyć, co robię źle? stackoverflow.com/questions/54614739/…
georgeB
Reguły zawsze mają wyjątki. Jeśli tak nie uważasz, jesteś w błędzie.
Jay Sullivan
3

Stenogramem do wykonania testów budowania i pomijania byłoby:

mvn clean install -DskipTests

Sourabh Bhavsar
źródło
2

W przypadku pakietu maven bez testu infekcji maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
igonejack
źródło
Dzięki, potrzebowałem właśnie tego dzisiaj.
Sean McMillan,
1

Robisz to oczywiście w niewłaściwy sposób. Testowanie jest ważną częścią wstępnego pakowania. Nie należy go ignorować ani pomijać, ale należy zrobić to we właściwy sposób. Spróbuj zmienić bazę danych, do której wstawia dane (np. Test_db). Konfiguracja może zająć trochę czasu. Aby mieć pewność, że ta baza danych będzie używana wiecznie, należy usunąć wszystkie dane przed końcem testów. JUnit4 ma adnotacje, które Ci to ułatwiają. Użyj adnotacji @Before, @After @Test dla właściwych metod. Musisz poświęcić na to trochę czasu, ale będzie warto!

Ozyman
źródło
9
Myślę, że pytanie, a także chęć spakowania bez uruchamiania testów jest całkowicie poprawna. Nie sądzę, że OP „oczywiście robi to źle”. Różni ludzie i projekty mają różne potrzeby, które zazwyczaj nie są zgodne z Biblią Mavena lub przekonaniami różnych osób (takich jak ty) na temat tego, jak powinno działać oprogramowanie. Myślę, że twoja odpowiedź byłaby bardziej doceniona bez jej protekcjonalnego podejścia.
Zero3
1

W Intellij przejdź do Widok -> Narzędzia Windows -> wybierz Projekty Maven. W menu rozwijanym Lifecyle kliknij prawym przyciskiem myszy pakiet -> wybierz opcję Utwórz „swój projekt [pakiet]” ...

Wprowadź tę wartość: package -Dmaven.test.skip=true -f pom.xmlw polu Wiersz polecenia. Kliknij Zastosuj, a wraz z utworzonym niestandardowym poleceniem maven powinno pojawić się menu rozwijane Uruchom konfiguracje.

Patrick Tolentino
źródło
dlaczego zostało to zanegowane? Używam tego za każdym razem, gdy chciałem zbudować swój projekt, ale pomijam testy
Patrick Tolentino,
0

mvn clean install -Dmaven.test.skip=true

pracował dla mnie, ponieważ -Dskipjuż nie działał.

Aggie Jon z 87
źródło
0
mvn package -Dmaven.test.skip=true
Mcvkr
źródło
-1

Najlepszy i najłatwiejszy sposób na zrobienie tego, w IntelliJ Idea w oknie „Maven Project” i po prostu nie klikaj przycisku testowego. Mam nadzieję że ci pomogłam. Miłego dnia :)

Vladimir
źródło
1
Jeśli klikniesz pakiet, uruchomione zostaną testy, których OP próbuje uniknąć
Charlie