Saya memiliki build Maven di mana saya menggunakan plugin SureFire untuk menjalankan beberapa tes unit, dan plugin FailSafe untuk menjalankan beberapa tes integrasi. Saya ingin cara menjalankan tes plugin FailSafe saja.
Ini bukan solusi yang baik bagi saya untuk menambahkan profil yang berbeda atau apa pun di pom, karena ini adalah multimodule build dan saya tidak ingin harus mengedit pom setiap modul.
Ada skip.tests
dan maven.test.skip
dan skipTests
yang menghentikan semua tes, dan skipITs
, yang hanya menghentikan plugin failafe.
Jadi, apakah ada flag command-line untuk Maven skipITs
, tetapi alih-alih dengan fungsi "onlyITs"?
maven
build
integration-testing
maven-surefire-plugin
maven-failsafe-plugin
Matthew Gilliard
sumber
sumber
maven.test.skip
atau tidakskipTests
?skipTests
hanya melewatkan tes yang pasti, bukan tes yang gagal! Mungkin itu fitur baru?Jawaban:
Saya menemukan cara paling sederhana untuk melewati hanya tes ayal adalah untuk mengkonfigurasi ayal ( tetapi tidak gagal ) sebagai berikut:
Ini memungkinkan Anda untuk menjalankan
mvn verify -Dskip.surefire.tests
dan hanya aman, bukan gagal, tes akan dilewati; itu juga akan menjalankan semua fase yang diperlukan lainnya termasuk pra-integrasi dan pasca-integrasi, dan juga akan menjalankanverify
tujuan yang diperlukan untuk benar-benar gagal membangun pakar Anda jika tes integrasi Anda gagal.Perhatikan bahwa ini mendefinisikan kembali properti yang digunakan untuk menentukan bahwa tes harus dilewati, jadi jika Anda menyediakan kanonik
-DskipTests=true
, pasti akan mengabaikannya tetapi gagal aman akan menghormatinya, yang mungkin tidak terduga, terutama jika Anda memiliki build / pengguna yang sudah menentukan flag tersebut. Solusi sederhana tampaknya menjadi defaultskip.surefire.tests
ke nilaiskipTests
di<properties>
bagian pom Anda:Jika perlu, Anda dapat memberikan parameter analagous yang disebut
skip.failsafe.tests
dengan failafe, namun saya belum menganggapnya perlu - karena tes unit biasanya berjalan pada fase sebelumnya, dan jika saya ingin menjalankan tes unit tetapi bukan tes integrasi, saya akan menjalankan yangtest
fase bukanverify
fase. Pengalaman Anda mungkin beragam!skip.(surefire|failsafe).tests
Properti ini mungkin harus diintegrasikan ke dalam kode pasti / failafe sendiri, tapi saya tidak yakin berapa banyak itu akan melanggar etos "mereka persis plugin yang sama kecuali untuk 1 perbedaan kecil" etos.sumber
<skipTests>false</skipTests>
masih berfungsi dengan kombinasi -DskipTests atau -Dskip.surefire.tests sebagai baris perintah yang sepertinya menimpa properti stackoverflow.com/questions/13708738 / ... Anda mungkin ingin menambahkan itu ke solusi Anda<skipTests>${skip.surefire.tests}</skipTests>
tidak bekerja denganmaven-surefire-plugin
versi3.0.0-M3
. Semua tes pasti masih berjalan. Adakah yang menemukan ini? Solusi Sean Patrick Floyd di bawah ini tetap berhasil.Solusinya adalah menelepon:
Memang, ini jelek, tetapi mungkin bisa menyelesaikan masalah Anda.
Atau (peretasan lain):
Referensi:
surefire:test#test
surefire:test#failIfNoTests
sumber
verify
bukanintegration-test
dalam solusi ke-2.failsafe:verify
ke akhir hack pertama (mvn clean test-compile failsafe:integration-test failsafe:verify
) itu akan gagal membangun jika salah satu tes integrasi gagal.Saya menggunakan kode dari Blog Antonio Goncalves , yang berfungsi sempurna.
Anda dapat menggunakan properti berikut:
-DskipUTs=true
untuk melewatkan tes jitu.-DskipITs=true
untuk melewatkan tes gagal aman.-DskipTests=true
untuk melewatkan semua tes.The
pom.xml
adalah sebagai berikut:sumber
skipITs
standarnya.Semoga ini membantu!
Cobalah untuk menjalankan tes hanya dengan FailSafe (plugin untuk uji integrasi - ini akan memungkinkan Anda untuk hanya menjalankan tes integrasi dengan penamaan semacam ini, secara default: * / IT .java, ** / IT.java, * /*ITCase.java ;, tetapi Anda dapat dengan mudah mengubahnya dari file pom)
Dan ketika Anda ingin menggunakan hanya SureFire (plugin untuk pengujian unit)
atau satu tes sekaligus dengan:
sumber
Saya memang suka ini sehingga setiap fase biasanya dijalankan:
sumber
Untuk memperluas komentar dari @danidemi dan @GuillaumeHusta:
Jadi untuk melewati tes unit, tetapi bukan tes integrasi, Anda dapat melakukan ini jika Anda menggunakan versi terbaru dari plugin Failsafe:
(tolong beri komentar yang disebutkan di atas jika ini membantu Anda)
sumber
Coba jalankan tes integrasi atau unit Anda di profil yang terpisah. Kemudian Anda bisa mengaktifkan / menonaktifkan profil.
sumber