Saya menemukan cara paling sederhana untuk melewati hanya tes ayal adalah untuk mengkonfigurasi ayal ( tetapi tidak gagal ) sebagai berikut:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<!-- skips surefire tests without skipping failsafe tests.
Property value seems to magically default to false -->
<skipTests>${skip.surefire.tests}</skipTests>
</configuration>
</plugin>
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 menjalankan verify
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 default skip.surefire.tests
ke nilai skipTests
di <properties>
bagian pom Anda:
<properties>
<skip.surefire.tests>${skipTests}</skip.surefire.tests>
</properties>
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 yang test
fase bukan verify
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.
maven.test.skip
atau tidakskipTests
?