Membangun gradle tanpa tes


636

Saya ingin mengeksekusi gradle buildtanpa menjalankan tes unit. Saya mencoba:

$ gradle -Dskip.tests build

Sepertinya tidak melakukan apa-apa. Apakah ada perintah lain yang bisa saya gunakan?


1
Mungkin ini membantu Anda Gradle Buil tanpa tes
bajingan

Apakah Anda menggunakan Java ??
Naga

2
-DskipTestsuntuk Maven
Gayan Weerakutti

Jawaban:


1241

Anda harus menggunakan -xargumen baris perintah yang mengecualikan tugas apa pun.

Mencoba:

gradle build -x test 

Memperbarui:

Tautan dalam komentar Peter berubah. Berikut adalah diagram dari panduan pengguna Gradle


45
Ini jawaban yang benar. 'Gradle assemble' akan meninggalkan banyak tugas lain juga. Lihat diagram ini untuk mendapatkan ide. Untuk bangunan biasa yang nyata, 'gradle assemble' akan meninggalkan lebih banyak tugas.
Peter Niederwieser

13
Tautan dari @PeterNiederwieser tidak lagi valid. Mungkin dia merujuk pada diagram ini: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

9
Bekerja meskipun Anda mungkin perlu menambahkan mis -x integTestdan sebagainya, jadi tidak senyaman selimut Maven -DskipTests.
Jesse Glick

1
@c_maker, Bagaimana cara melakukan ini dari eclipse?
rinuthomaz

Apakah mungkin untuk mengeksekusi file kelas? Maksud saya, dengan runsaya dapat melihat efek dari program Hello saya. Tapi saya pikir itu kompilasi semuanya lagi. Saya hanya ingin menjalankan program java.
Sigur

107

Mencoba:

gradle assemble

Untuk daftar semua tugas yang tersedia untuk proyek Anda, coba:

gradle tasks

MEMPERBARUI:

Ini mungkin kelihatannya bukan jawaban yang paling benar pada awalnya, tetapi bacalah dengan teliti gradle taskskeluaran atau dokumen.

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

8
Sebagai petunjuk tambahan jika Anda gradle assemblemen -debug unit test Anda: tidak akan mengkompilasi file utama. Jika Anda berusaha memperbaiki unit test Anda maka Anda perlu gradle assemble testClasses- Saya pikir penamaan tugas build cukup membingungkan.
Martin

36

Jawaban yang diterima adalah yang benar.

OTOH, cara saya sebelumnya memecahkan ini adalah dengan menambahkan yang berikut ke semua proyek:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

Jalankan build dengan -Dskip.tests=truedan semua tugas tes akan dilewati.


3
Bagi saya ini masih satu-satunya pilihan yang berfungsi karena tes -x tampaknya hanya bekerja pada proyek awal tetapi tidak untuk dependensi dalam membangun multi proyek (diuji pada gradle 2.1). Letakkan test.onlyif ... di blok configure (subprojects.findAll {javaProjects.contains (it.name)}) {} di root build.gradle Anda dan itu akan bekerja untuk semua proyek.
timm

Bagus Cara ini akrab bagi pengguna pakar.
AlexR

23

Anda dapat menambahkan baris berikut ke build.gradle, **/*mengecualikan semua tes.

test {
    exclude '**/*'
}

2
Ini adalah jawaban terbaik IMHO
Marco Sulla

1
Terima kasih! jawaban anda sangat membantu.
JAY PATEL


4

Referensi

Untuk mengecualikan tugas apa pun dari gradle, gunakan -xopsi baris perintah. Lihat contoh di bawah ini

task compile << {
    println 'task compile'
}

task compileTest(dependsOn: compile) << {
    println 'compile test'
}

task runningTest(dependsOn: compileTest) << {
    println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
    println 'running distribution job'
}

Output dari: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Semoga ini akan memberi Anda dasar


silakan kirim tangkapan layar halaman tersebut. saya tidak tahu di mana harus meletakkan baris kode ini ....
Hossein Mansouri

Sepotong kode ini harus ada di build.gradle Anda :)
Suganthan Madhavan Pillai

2

cara berbeda untuk menonaktifkan tugas pengujian dalam proyek adalah:

tasks.withType(Test) {enabled = false}

perilaku ini kadang-kadang diperlukan jika Anda ingin menonaktifkan tes di salah satu proyek (atau grup proyek).

Dengan cara ini bekerja untuk semua jenis tugas tes, bukan hanya 'tes' java. Juga, cara ini aman. Inilah yang saya maksud, katakanlah: Anda memiliki serangkaian proyek dalam berbagai bahasa: jika kami mencoba menambahkan catatan semacam ini di main build.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

kita akan gagal dalam suatu proyek ketika jika kita tidak memiliki tugas yang disebut tes


2

Menggunakan -x testlewati pengujian pelaksanaan tetapi ini juga mengecualikan kompilasi kode tes.

gradle build -x test 

Dalam kasus kami, kami memiliki proses CI / CD di mana satu tujuan adalah kompilasi dan tujuan berikutnya adalah pengujian (Build -> Test).

Jadi, untuk Buildtujuan pertama kami, kami ingin memastikan bahwa seluruh proyek dapat dikompilasi dengan baik. Untuk ini kami telah menggunakan:

./gradlew build testClasses -x test

Pada tujuan berikutnya kita cukup menjalankan tes.


0
gradle build -x test --parallel

Jika mesin Anda memiliki beberapa inti. Namun, tidak dianjurkan untuk menggunakan pembersihan paralel.


0

Silakan coba ini:

gradlew -DskipTests=true build


6
@KirankumarDafda - no. Anda dapat memposting jawaban kapan pun Anda inginkan, bahkan jika jawaban yang ada telah diterima. Jawaban baru mungkin lebih baik daripada jawaban yang diterima, atau menyelesaikannya dengan cara yang berbeda, atau membantu orang lain. Dari Ulasan .
Wai Ha Lee

@ WanHaLee Saya tidak dapat mengedit komentar saya, tetapi karena saya mendapat saran untuk pengguna baru, saya ingin menjelaskan bahwa mencoba menambahkan jawaban dengan lebih banyak klarifikasi sehingga pengguna lain dapat memeriksa apakah mengapa jawaban atau kode ini membantu mereka.
Kirankumar Dafda

0

Di Plugin Java :

$ gradle tasks

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.

Verification tasks
------------------
test - Runs the unit tests.

Gradle build tanpa tes Anda memiliki dua opsi:

$ gradle assemble
$ gradle build -x test

tetapi jika Anda ingin mengompilasi tes:

$ gradle assemble testClasses
$ gradle testClasses
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.