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?

vks
sumber
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 
Giorgos Dimtsas
sumber
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
Jayakumar J
sumber
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>
smp7d
sumber
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
Chris Beach
sumber
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/

Rosdi Kasim
sumber
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

krishna vimal
sumber
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 .

Vineet Reynolds
sumber
17

Anda hanya perlu menyediakan

-Dmaven.test.skip

Anda tidak perlu lagi menambahkan =true.

Adriaan Koster
sumber
13

Dalam Inllij IDEA ada opsi juga untuk melewati tujuan tes.

masukkan deskripsi gambar di sini

Dushmantha
sumber
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>
anubhava
sumber
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
Sahil Chhabra
sumber
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.

Ryan Stewart
sumber
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
4

hanya mvn clean install -DskipTests

Ravinda lakshan
sumber
3

Notasi singkat untuk melakukan tes pakar dan melewati tes adalah:

mvn bersih instal -DskipTests

Sourabh Bhavsar
sumber
2

Untuk paket pakar tanpa menginfeksi tes pakar:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
igonejack
sumber
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!

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

Patrick Tolentino
sumber
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.

Aggie Jon dari 87
sumber
0
mvn package -Dmaven.test.skip=true
mcvkr
sumber
-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 :)

Vladimir
sumber
1
Jika Anda mengklik paket, itu menjalankan tes, yang mencoba untuk menghindari OP
Charlie