Maven atlama testleri


227

Maven 2.2.1 kullanıyorum ve projemi oluşturmak için bu komutu kullandım

mvn clean install -Dmaven.test.skip=true

Ancak yapı, eserlerden birini bulamadığını söyleyerek başarısız oldu. Ancak, kullandığımda:

mvn clean install -DskipTests

her şey iyi çalıştı.

Şimdiye kadar bu 2 komutun eşdeğer olduğunu düşünüyorum. Bununla birlikte, bu bağlantı-Dmaven.test.skip=true , test senaryolarını derlemeyi de atladığını düşündürmektedir .

Ancak, bu hala bana bir komutun neden çalıştığını, diğerinin çalışmadığını açıklamıyordu. Herkes bana açıklarsa minnettar olurum.


1
Hangi maven-surefire-plugin sürümünü kullanıyorsunuz? Okuduğunuz doc sürümüyle aynı mı?
gerrytan

2
Biri binayı, diğeri koşmayı atlıyor. İkisini de kullanmak istiyorsanız her ikisini de kullanın.
Elliott Frisch

1
Hatanın ayrıntılarını verebilir misiniz - hata mesajı veya yığın izlemesi?
Raghuram

1
Neden zaten EoL olarak tanımlanmış daha eski bir Maven sürümünü kullanıyorsunuz ?
khmarbaise

1
Bu yüzden kullanmak zorunda olduğum her şeyi testini tamamen atlamak gerçekten doğru -Dmaven.test.skip=true -DskipTestsmu? Koşullara bağlı olarak, biri veya diğeri bazen atlanabilir, ancak bunu düşünmek isteyen ..
Landon Kuhn

Yanıtlar:


121

Belirttiğiniz gibi -Dmaven.test.skip=true, testleri derler. Daha da önemlisi, test eserlerini oluşturmayı atlıyor. Büyük projeler için ortak bir uygulama, test projelerinin ve temel sınıfların aynı projedeki modüller arasında paylaşılmasıdır.

Bu, test-jarönceden oluşturulmuş bir modülün gerektirdiği bir modülün bulunmasıyla gerçekleştirilir :

<dependency>
  <groupId>org.myproject.mygroup</groupId>
  <artifactId>common</artifactId>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

Eğer -Dmaven.test.skip=true(veya basitçe -Dmaven.test.skip) belirtilirse, test-jars inşa edilmez ve onlara güvenir herhangi modül kendi yapı başarısız olur.

Buna karşılık, kullandığınızda -DskipTestsMaven testleri çalıştırmaz , ancak bunları derler ve test kavanozunu oluşturur ve sonraki modüller için kullanılabilir hale getirir.


2
Bu problem nasıl çözülür? Çevrimiçi maven komutum olarak -Dmaven.test.skip kullanın.
neptün

2
@neptune ne problemi? Yeni bir sorunuz varsa, lütfen sormak için yeni bir yazı kullanın.
Mureinik

58

Paketi oluşturmak için testlere bazı bağımlılıklar yaşadım.

Aşağıdaki komut, hedefi tamamlamak için test yapay nesnesi ihtiyacını geçersiz kılar:

mvn -DskipTests=true  package

29

Her parametre arasında bir fark vardır.

  • -DskipTests çalışan testler aşamasını atlar, bu işlemin sonunda testlerinizin derlenmesini sağlar.

  • -Dmaven.test.skip = gerçek atlama derleme ve çalıştırma testleri aşaması.

-Dmaven.test.skip = true skip compiling parametresi olarak, test yapay nesnesi yoktur.

Daha fazla bilgi için sörfçü belgelerini okuyun: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html


16

Aynı sorunla sonuçlanan bir örnek verebilirim, ancak sorunuza cevap vermeyebilir. (Ayrıca, bu örnekte, Maven 2 için geçerli olmayabilecek Maven 3 bilgilerimi kullanıyorum.)

Bir çok modüllü maven projede (modüllerini içeriyor Ave Bnerede Bbağlıdır A), ayrıca bir ekleyebilir Test bağımlılığı üzerine Agelen B.

Bu bağımlılık aşağıdaki gibi görünebilir:

<dependency>
     <groupId>com.foo</groupId>
     <artifactId>A</artifactId>
     <type>test-jar</type> <!-- I'm not sure if there is such a thing in Maven 2, but there is definitely a way to achieve such dependency in Maven 2. -->
     <scope>test</scope>
</dependency>

(daha fazla bilgi için https://maven.apache.org/guides/mini/guide-attached-tests.html adresine )
Projenin , test sınıflarının ve test kaynaklarının bulunduğu Abir sınıflandırıcıyla ikincil eser ürettiğini unutmayın tests.

Projenizi ile oluşturursanız -Dmaven.test.skip=true, test eseri yerel deponuzda veya harici depolarınızda bulunmadığı sürece bir bağımlılık çözümleme hatası alırsınız . Bunun nedeni, test sınıflarının ne derlenmediği ne de yapı testsüretilmesidir.
Eğer birlikte yapı çalıştırın Ancak, -DskipTestssizin testsdışlayıcı (testler yayınlanmaz rağmen) üretilecek ve bağımlılık çözülecektir.


10

Maven clean install sırasında test durumunu atlamak için aşağıdaki komutta -DskipTests parametresini kullandım

mvn clean install -DskipTests

terminal penceresine



1

Maven derlemesi sırasında pom.xml dosyasına aşağıdaki eklentiyi ekleyerek test yürütmesini atlayabilirsiniz.

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

1
Yaptığınız zaman bile testleri atlarmvn test
Pratik Singhal
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.