Apa perbedaan antara plugin Maven Surefire dan Maven Failsafe?

Jawaban:

141

Dengan kata sederhana, plugin Failsafe dirancang untuk menjalankan tes integrasi sementara Surefire menjalankan tes unit .

Ini dijelaskan lebih lanjut di FAQ Maven :

  • maven-surefire-plugindirancang untuk menjalankan pengujian unit dan jika salah satu pengujian gagal maka build akan segera gagal.

  • maven-failsafe-plugindirancang untuk menjalankan pengujian integrasi , dan memisahkan kegagalan build jika ada kegagalan pengujian dari sebenarnya menjalankan pengujian.

    Nama " failafe " dipilih karena merupakan sinonim dari surefire dan karena ia menyiratkan bahwa ketika gagal, ia melakukannya dengan cara yang aman.

    The Failsafe Plugin memiliki dua tujuan:

Lihat juga:

kenorb
sumber
4
Pertanyaan yang menarik adalah mengapa . Banyak alat build bekerja dengan sempurna tanpa membuat perbedaan ini bisa dibilang agak artifisial dan terbatas. Mengonfigurasi kedua plugin bersama dan menyerap laporannya dengan cara yang konsisten adalah PITA yang cukup.
Raphael
Dan tidak, perbedaan yang dinyatakan dalam jawaban lain tidak memberikan alasan yang cukup untuk memiliki beberapa alat untuk apa yang seharusnya menjadi filter dan panji.
Raphael
27

Dari https://maven.apache.org/surefire/maven-failsafe-plugin/ , saya akan mengatakan bahwa perbedaan antara Surefire dan Failsafe adalah cara mereka gagal:

Jika Anda menggunakan Plugin Surefire untuk menjalankan pengujian, maka saat Anda mengalami kegagalan pengujian, build akan berhenti pada fase pengujian integrasi dan lingkungan pengujian integrasi Anda tidak akan dirobohkan dengan benar.

Plugin Failsafe digunakan selama pengujian integrasi dan fase verifikasi dari siklus proses build untuk menjalankan pengujian integrasi aplikasi. Plugin Failsafe tidak akan gagal dalam build selama fase uji integrasi, sehingga memungkinkan fase uji pasca integrasi dijalankan.

Jonas Wolf
sumber
2
Kemudian pertanyaannya menjadi: mengapa menggunakan Surefire jika mereka memberi tahu kita bahwa hal itu dapat membuat barang dalam keadaan salah?
pengguna118967
6

Di negara saya, ini adalah hasil google kedua ketika mencari "maven failafe maven surefire" untuk sampai ke FAQ ini: Perbedaan antara maven-failafe-plugin dan maven-surefire-plugin yang menyatakan:

maven-surefire-plugin dirancang untuk menjalankan pengujian unit dan jika ada pengujian yang gagal maka build akan segera gagal.

maven-failafe-plugin dirancang untuk menjalankan pengujian integrasi, dan memisahkan kegagalan build jika ada kegagalan pengujian karena benar-benar menjalankan pengujian. "

JBA
sumber