Membuat Maven menjalankan semua tes, bahkan ketika beberapa gagal


243

Saya punya proyek dengan beberapa modul. Ketika semua tes lulus, tes Maven menjalankan semuanya.

Ketika tes gagal dalam modul pertama, pakar tidak akan melanjutkan ke proyek berikutnya. Saya memiliki testFailureIgnore yang disetel ke true dalam pengaturan Surefire, tetapi tidak membantu.

Bagaimana cara membuat pakar menjalankan semua tes?


Versi apa dari maven-surefire-plugin?
Pascal Thivent

Jawaban:


359

Dari dokumentasi Maven Embedder :

-fae, --fail-at-end Hanya gagal membangun setelahnya; biarkan semua bangunan yang tidak terkena dampak untuk melanjutkan

-fn, --fail-never JANGAN PERNAH gagal membangun, terlepas dari hasil proyek

Jadi, jika Anda menguji satu modul daripada Anda aman menggunakan -fae.

Jika tidak, jika Anda memiliki banyak modul, dan jika Anda ingin semuanya diuji (bahkan yang bergantung pada modul tes gagal), Anda harus menjalankan mvn clean install -fn.
-faeakan melanjutkan dengan modul yang memiliki tes gagal (akan menjalankan semua tes lain), tetapi semua modul yang bergantung padanya akan dilewati.


1
Anda juga dapat menambahkan -e untuk cmd untuk memberikan beberapa informasi kesalahan.
despot

11
Saya baru saja menguji opsi --fail-never. Maven tidak akan gagal membangun meskipun ada kesalahan kompilasi. Jika saya menggunakan opsi ini pada Jenkins, build akan terlihat berhasil walaupun memiliki banyak kesalahan kompilasi. Saya lebih suka -Dmaven.test.failure.ignore=truedalam kasus ini dan membiarkan Jenkins menganalisis laporan yang pasti.
fuemf5

@wlnirvana Saya telah mengedit posting sekarang dengan tautan ini (jadi silakan hapus komentar Anda ...)
Steve Chambers

93

Saya baru saja menemukan parameter "-fae", yang menyebabkan Maven menjalankan semua tes dan tidak berhenti pada kegagalan.


3
Sayangnya, parameter ini tidak berfungsi ketika saya meneruskannya ke TeamCity.
ripper234

4
Dalam proyek multi-modul, modul yang bergantung pada modul yang gagal tes akan dilewati. Gunakan -fn sebagai gantinya.
hipokito

2
@ ripper234 apakah Anda menemukan cara untuk membuatnya bekerja di TeamCity?
Jeredriq Demas

86

Dapatkah Anda menguji dengan pasti 2.6 dan mengkonfigurasi dengan baik testFailureIgnore=true. Atau di baris perintah:

mvn install -Dmaven.test.failure.ignore=true

16
IIRC ini memiliki efek seluruh build tidak gagal, daripada menjalankan semua tes dan gagal pada akhirnya.
Ondra Žižka

1
Ini adalah satu-satunya opsi yang berfungsi untuk saya ... Opsi "-fae" tidak melakukan apa pun pada kegagalan pengujian
Yoi

38

Cobalah untuk menambahkan konfigurasi berikut untuk plugin surefire di pom.xml proyek root Anda :

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

Jawaban cepat:

mvn -fn test

Bekerja dengan membangun proyek bersarang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.