Paket / pemasangan Maven tanpa tes (lewati tes)


343

Saya mencoba mengemas proyek saya. Tapi, secara otomatis menjalankan tes sebelumnya melakukan kemasan. Tes memasukkan beberapa konten ke dalam basis data. Ini bukan yang saya inginkan, saya harus menghindari menjalankan tes saat paket aplikasi. Adakah yang tahu bagaimana menjalankan paket tanpa tes?


13
Unit-Test harus terdiri dari 4 fase berikut: Inisialisasi, Tes, Verifikasi, dan Teardown. Mungkin Anda harus menyesuaikan tes Anda dan menambahkan teardown / pembersihan database Anda atau Anda harus menggunakan contoh database terpisah, tidak dikemas dengan file jar Anda, untuk menjalankan tes Anda.
Marc-Christian Schulze

Tampaknya tes Anda "berat" sehingga Anda tidak ingin menjalankannya. Tapi itu praktik yang buruk. Mungkin beberapa kerangka kerja seperti DBUnit dapat membantu Anda? Atau Anda dapat mengembalikan perubahan database di akhir tes?
Mickael Marrache

Jawaban:


573

Jalankan pakar dengan

mvn package -Dmaven.test.skip=true 

1
terima kasih atas balasan langsung Anda, saya berlari dari gerhana, di mana saya menambahkan perintah -Dmaven.test.skip = benar?
vks

10
Saya belum pernah meluncurkan mvn dari eclipse, tetapi di jendela Run Configuration tempat Anda mengkonfigurasi target dan profil maven, ada kotak centang 'Lewati Tes'. Mungkin itu akan berhasil.
Giorgos Dimtsas

9
sesuai dengan dokumentasi yang akan melewati kompilasi dan juga eksekusi. Anda dapat menggunakan -DskipTests untuk hanya melewatkan eksekusi. Posting ini juga memberikan peringatan tentang versi apa yang dapat Anda gunakan untuk setiap bendera
JonnyRaa

1
Terima kasih banyak, saya terbiasa melakukannya dengan menggunakan -DskipTeststetapi tidak berfungsi lagi, tahu mengapa?
sam

7
Perhatikan bahwa dokumentasi Maven Surefire Plugin dan Maven Failsafe Plugin menunjukkan bahwa pengaturan skipTestslebih disukai daripada pengaturan maven.test.skip.
Filip Bártek

172

Cukup berikan perintah yang disebutkan di bawah ini yang akan mengabaikan pelaksanaan kasus uji,

mvn package -DskipTests

4
bagi saya ini tidak akan berhasil. Saya harus menggunakan solusi yang diterima sebagai gantinya
Sebas

1
-DskipTeststidak bekerja untuk saya ketika saya menggunakanmvn clean install -DskipTests
Vishrant

1
Ini sebagian baik-baik saja karena tidak akan menjalankan tes TETAPI itu akan mengacaukan kelas tes .....
Antoniossss

Untuk pengikut, -DskipTestssama dengan -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 dan ya itu mengkompilasi tes dan tidak menjalankannya (sedangkan -Dmaven.test.skip=truetidak mengkompilasi)
rogerdpack

47

Anda dapat menambahkan konfigurasi plugin ini ke pom Anda jika Anda tidak ingin mengatur arg baris perintah:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>

3
Anda tidak dapat lagi menjalankan tes dari baris perintah dengan konfigurasi ini.
Emmanuel Bourg

1
@EmmanuelBourg Itu bisa diatasi dengan mengikuti petunjuk dalam contoh ini maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d


41

Perhatikan bahwa -Dmaven.test.skip mencegah Maven membangun artefak test-jar.

Jika Anda ingin melewati tes tetapi membuat artefak sesuai penggunaan normal:

-Dmaven.test.skip.exec

1
Ini adalah asnwer yang saya cari, berfungsi dengan baik. Terima kasih.
Binita Bharati

Bagaimana aku bisa mengingat itu? Mengapa tidak membuat alias yang jelas dan mudah diingat seperti "skipTests"?
TheRealChx101

32

Jika Anda mencoba ini di Windows Powershell, Anda akan mendapatkan kesalahan ini:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

Alasannya adalah, di Powershell " -" memiliki arti khusus dan itu menyebabkan masalah dengan pakar.

Solusinya adalah dengan menambahkannya dengan backtick (`), seperti begitu ..

mvn `-Dmaven.test.skip=true install 

Referensi: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/


1
Saya memiliki masalah yang sama dan ini menyelesaikannya untuk saya. Terima kasih.
nsof

26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

juga merupakan cara untuk menambahkan file pom


18

Anda bisa melewati maven.test.skipflag sebagai argumen JVM, untuk melewati tes yang berjalan ketika fase paket (dan yang sebelumnya dalam siklus hidup default) dijalankan:

mvn package -Dmaven.test.skip=true

Anda juga dapat mengirimkan skipTestsflag itu sendiri ke mvn yang dapat dieksekusi. Jika Anda ingin memasukkan informasi ini dalam POM Anda, Anda dapat membuat profil baru tempat Anda dapat mengkonfigurasi maven-surefire-pluginuntuk melewati tes .


17

Anda hanya perlu menyediakan

-Dmaven.test.skip

Anda tidak perlu lagi menambahkan =true.



11

Menjawab pertanyaan lama dan diterima di sini. Anda dapat menambahkan ini di pom.xml Anda jika Anda ingin menghindari melewati argumen baris perintah setiap saat:

  <properties>
    <skipTests>true</skipTests>
  </properties>

10

Anda dapat menambahkan salah satu -DskipTestsatau -Dmaven.test.skip=trueke mvnperintah apa pun untuk melewatkan tes. Dalam kasus Anda itu akan seperti di bawah ini:

mvn package -DskipTests

ATAU

mvn package -Dmaven.test.skip=true

4

Tes harus selalu [1] dijalankan sebelum paket. Jika Anda perlu mematikan tes, Anda melakukan sesuatu yang salah. Dengan kata lain, Anda mencoba menyelesaikan masalah yang salah. Cari tahu apa masalah Anda sebenarnya, dan ajukan pertanyaan itu. Sepertinya itu terkait dengan basis data.

[1] Anda mungkin melewatkan tes saat Anda perlu dengan cepat menghasilkan artefak untuk penggunaan lokal, pengembangan, tetapi secara umum, membuat artefak harus selalu mengikuti uji coba yang berhasil.


Saya memiliki masalah yang sama: aplikasi saya mengandung websocket. Ketika saya menjalankan mvn clean install, saya berakhir dengan seri pengujian tanpa akhir. Sebelum saya menutup paksa prosesnya telah berlangsung selama 3 jam dan pesan yang dicetak hanya tentang Websocket. Bisakah Anda memeriksa masalah saya untuk melihat apa yang saya lakukan salah? stackoverflow.com/questions/54614739/…
georgeB

Aturan selalu memiliki pengecualian. Jika tidak, Anda salah.
Jay Sullivan


3

Notasi singkat untuk melakukan tes pakar dan melewati tes adalah:

mvn bersih instal -DskipTests


2

Untuk paket pakar tanpa menginfeksi tes pakar:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

Terima kasih, saya butuh ini hari ini.
Sean McMillan

1

Anda, tentu saja, melakukannya dengan cara yang salah. Pengujian adalah bagian penting dari pra-pengemasan. Anda tidak boleh mengabaikan atau melewatkannya, tetapi lakukan dengan cara yang benar. Coba ubah database tempat data dimasukkan (seperti test_db). Mungkin perlu beberapa saat untuk mengaturnya. Dan untuk memastikan bahwa basis data ini dapat digunakan selamanya, Anda harus menghapus semua data pada akhir tes. JUnit4 memiliki anotasi yang memudahkan Anda. Gunakan @Sebelum, @Setelah anotasi @Test untuk metode yang tepat. Anda perlu menghabiskan waktu untuk itu, tetapi itu akan sia-sia!


9
Saya pikir pertanyaan serta keinginan untuk paket tanpa menjalankan tes sangat valid. Saya tidak berpikir OP "jelas melakukannya dengan cara yang salah". Orang dan proyek yang berbeda memiliki kebutuhan yang berbeda, dan ini biasanya tidak selaras dengan Alkitab Maven atau kepercayaan berbagai orang (seperti Anda) tentang bagaimana pengembangan perangkat lunak seharusnya bekerja. Saya pikir jawaban Anda akan lebih dihargai tanpa pendekatan yang merendahkan.
Zero3

1

Di Intellij, buka Lihat -> Alat Windows -> pilih Proyek Maven. Pada dropdown Lifecyle, klik kanan pada paket -> pilih Buat 'proyek Anda [paket]' ...

Masukkan nilai ini: package -Dmaven.test.skip=true -f pom.xmldi bidang baris perintah. Klik Terapkan dan menu tarik-turun Jalankan Konfigurasi akan muncul bersama dengan perintah pakar kustom yang Anda buat.


mengapa ini diturunkan? Saya menggunakan ini setiap kali saya ingin membangun proyek saya tetapi melewatkan tes
Patrick Tolentino

0

mvn clean install -Dmaven.test.skip=true

bekerja untuk saya karena -Dskiptidak berfungsi lagi.



-1

Cara terbaik dan termudah untuk melakukannya, di IntelliJ Idea di jendela “Maven Project”, dan jangan klik tombol tes. Saya harap, saya membantu Anda. Semoga harimu menyenangkan :)


1
Jika Anda mengklik paket, itu menjalankan tes, yang mencoba untuk menghindari OP
Charlie
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.