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?

ripper234
sumber
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.

penganiaya
sumber
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.

ripper234
sumber
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
Thivent Pascal
sumber
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>
nybon
sumber
17

Jawaban cepat:

mvn -fn test

Bekerja dengan membangun proyek bersarang.

rustyx
sumber