Test olmadan maven paketi / kurulumu (testleri atla)


343

Projemi paketlemeye çalışıyorum. Ancak, ambalajı gerçekleştirmeden önce testleri otomatik olarak çalıştırır. Testler veritabanına bazı içerikler ekler. Bu istediğim şey değil, uygulamayı paketlerken testleri çalıştırmaktan kaçınmam gerekiyor. Paketi olmayan testi nasıl çalıştıracağını bilen var mı?


13
Birim Testi şu 4 aşamadan oluşmalıdır: Başlatma, Test, Doğrulama ve Yırtma. Belki de testlerinizi ayarlamanız ve veritabanınıza uygun bir sökme / temizleme eklemeniz veya testlerinizi çalıştırmak için jar dosyanızla paketlenmemiş ayrı bir veritabanı örneği kullanmanız gerekir.
Marc-Christian Schulze

Testlerinizin "ağır" olduğu anlaşılıyor, bu yüzden onları yürütmek istemiyorsunuz. Ama bu kötü bir uygulama. Belki DBUnit gibi bazı çerçeveler size yardımcı olabilir? Ya da testin sonunda veritabanı değişikliklerini geri alabilir misiniz?
Mickael Marrache

Yanıtlar:


575

İle maven çalıştır

mvn package -Dmaven.test.skip=true 

1
anında cevap için teşekkürler, eclipse çalışıyorum, nereye -Dmaven.test.skip = true komutu eklemek?
vks

10
Tutulmadan mvn'yi hiç başlatmadım, ancak maven'in hedeflerini ve profillerini yapılandırdığınız Yapılandırmayı Çalıştır penceresinde bir 'Testi Atla' onay kutusu var. Belki bu işe yarayacaktır.
Giorgos Dimtsas

9
derleme ve yürütmeyi atlayacak belgelere göre . Sadece yürütmeyi atlamak için -DskipTests kullanabilirsiniz. Bu gönderi ayrıca her bayrağı hangi sürümlerle kullanabileceğiniz konusunda bazı uyarılar verir
JonnyRaa

1
Çok teşekkürler, bunu kullanarak yapardım -DskipTestsama artık işe yaramıyor, neden herhangi bir fikir?
sam

7
Not olduğunu Maven Surefire Eklentisi ve Maven Arıza güvenli Eklenti belgelerine bu ayar anlaşılacağı skipTestsayara tercih edilir maven.test.skip.
Filip Bártek

172

Test senaryolarını yürütmeyi göz ardı edecek aşağıda belirtilen komutu sağlamanız yeterlidir,

mvn package -DskipTests

4
benim için bu işe yaramaz.
Onun

1
-DskipTestsmvn clean install -DskipTests
Kullandığımda

1
Test yürütmeyecek gibi kısmen iyi AMA test sınıfları derleyecek .....
Antoniossss

Takipçiler -DskipTestsiçin -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 ile aynıdır ve evet testleri derler ve çalıştırmaz (oysa -Dmaven.test.skip=truebunları
derlemez

47

komut satırı arg ayarını yapmak istemiyorsanız pom'a bu eklenti yapılandırmasını ekleyebilirsiniz:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
Bu yapılandırmayla testleri artık komut satırından çalıştıramazsınız.
Emmanuel Bourg

1
@EmmanuelBourg Bu örnekte aşağıdaki talimatları uygulayarak giderilebilir maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d 18:12


41

-Dmaven.test.skip öğesinin Maven'in test kavanozu yapısını oluşturmasını engellediğini unutmayın.

Testleri atlamak, ancak normal bir yapı kullanımına göre yapay nesneler oluşturmak istiyorsanız:

-Dmaven.test.skip.exec

1
Bu aradığım asnwer, gayet iyi çalışıyor.
Binita Bharati

Bunu nasıl hatırlamam gerekiyor? Neden "skipTests" gibi basit ve anlaşılır bir takma ad oluşturmuyorsunuz?
TheRealChx101

32

Bunu Windows Powershell'de deniyorsanız, şu hatayı alırsınız:

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

Bunun nedeni, Powershell'de " -" özel bir anlama sahiptir ve maven ile soruna neden olmaktadır.

Çözüm, bu şekilde bir backtick (`) ile başa çıkmaktır.

mvn `-Dmaven.test.skip=true install 

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


1
Aynı sorunu yaşadım ve bu benim için çözdü. Teşekkürler.
15'te

26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

ayrıca pom dosyasına eklemenin bir yoludur


18

maven.test.skipPaket aşaması (ve varsayılan yaşam döngüsünde öncekiler) çalıştırıldığında çalışan testleri atlamak için bayrağı JVM bağımsız değişkeni olarak iletebilirsiniz :

mvn package -Dmaven.test.skip=true

skipTestsBayrağı ayrıca mvn yürütülebilir dosyasına da iletebilirsiniz . Bu bilgileri POM'nize eklemek istiyorsanız, testleri atlamakmaven-surefire-plugin için yapılandırabileceğiniz yeni bir profil oluşturabilirsiniz .


17

Sadece sağlamanız gerekir

-Dmaven.test.skip

Artık eklemenize gerek yok =true.



11

Burada eski ve kabul edilmiş bir soruyu cevaplamak. Komut satırı bağımsız değişkenini her zaman iletmekten kaçınmak istiyorsanız bunu pom.xml dosyasına ekleyebilirsiniz:

  <properties>
    <skipTests>true</skipTests>
  </properties>

11

Testleri atlamak için -DskipTestsya -Dmaven.test.skip=trueherhangi bir mvnkomuta ekleyebilirsiniz . Sizin durumunuzda aşağıdaki gibi olurdu:

mvn package -DskipTests

VEYA

mvn package -Dmaven.test.skip=true


4

Testler daima ambalajdan önce yapılmalıdır [1]. Testleri kapatmanız gerekiyorsa, yanlış bir şey yapıyorsunuz. Başka bir deyişle, yanlış sorunu çözmeye çalışıyorsunuz. Sorununuzun gerçekte ne olduğunu bulun ve bu soruyu sorun. Veritabanıyla ilgili gibi görünüyor.

[1] Yerel, geliştirme kullanımı için hızlı bir yapı oluşturmanız gerektiğinde testleri atlayabilirsiniz, ancak genel olarak bir yapı oluşturmak her zaman başarılı bir test çalışmasını izlemelidir.


Benzer bir sorunum var: Uygulamalarım websocket içeriyor. Ben mvn clean install çalıştırdığımda sonsuz bir test serisi sonunda. Zorla kapatmadan önce işlem 3 saattir devam ediyor ve yazdırılan mesajlar Websocket ile ilgili. Ne yaptığımı görmek için lütfen sorunumu kontrol edebilir misiniz? stackoverflow.com/questions/54614739/…
georgeB

Kuralların her zaman istisnaları vardır. Eğer öyle düşünmüyorsan, yanılıyorsun.
Jay Sullivan

3

Maven oluşturma ve atlama testlerini yapmak için kestirme gösterim:

mvn clean install -DskipTest'ler


2

Maven testine bulaşmadan maven paketi için:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

Teşekkürler, bugün tam da buna ihtiyacım vardı.
Sean McMillan

1

Açıkçası yanlış şekilde yapıyorsunuz. Test, ön paketlemenin önemli bir parçasıdır. Göz ardı etmemeli veya atlamamalısınız, daha doğrusu doğru şekilde yapmalısınız. Veri eklediği veritabanını değiştirmeyi deneyin (test_db gibi). Kurulumu biraz zaman alabilir. Ve bu veritabanının sonsuza kadar kullanılabildiğinden emin olmak için, testlerin sonunda tüm verileri silmelisiniz. JUnit4, sizin için kolaylaştıran ek açıklamalara sahiptir. Doğru yöntemler için @Before, @After @Test ek açıklamalarını kullanın. Üzerinde bir zaman geçirmeniz gerekiyor, ama buna değecek!


9
Sorunun yanı sıra testler yapmadan paketleme arzusunun mükemmel olduğunu düşünüyorum. OP'nin "açıkçası yanlış şekilde yaptığını" sanmıyorum. Farklı insanların ve projelerin farklı ihtiyaçları vardır ve bunlar genellikle Maven İncil'i veya çeşitli insanların (sizin gibi) yazılım geliştirmenin nasıl çalışması gerektiği hakkındaki inançlarıyla uyumlu değildir. Bence cevabınız küçümseyen yaklaşımı olmadan daha çok takdir edilecektir.
Sıfır3

1

Intellij'de Görünüm -> Araç Pencereleri -> Maven Projeleri'ni seçin. Lifecyle açılır menüsünde, pakete sağ tıklayın -> 'projenizi [paket]' oluştur'u seçin ...

Bu değeri: package -Dmaven.test.skip=true -f pom.xmlKomut satırı alanına girin. Uygula'yı tıkladığınızda oluşturulan özel maven komutunuzla birlikte Çalıştırma Yapılandırmaları açılır menüsü görünmelidir.


bu neden indirgendi? Bunu projemi oluşturmak istediğim her seferinde kullanıyorum ama testleri
Patrick Tolentino



-1

Bunu yapmanın en iyi ve en kolay yolu IntelliJ Idea'da “Maven Project” penceresinde test düğmesine tıklamayın. Umarım sana yardım edebilmişimdir. İyi günler :)


1
Paketi tıklatırsanız, OP'nin kaçınmaya çalıştığı testler yapılır
Charlie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.