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.