Testsiz kepçe yapımı


635

gradle buildBirim testleri yapmadan yürütmek istiyorum . Denedim:

$ gradle -Dskip.tests build

Hiçbir şey yapmıyor gibi görünüyor. Kullanabileceğim başka bir komut var mı?



Java kullanıyor musunuz ??
Naga

2
-DskipTestsMaven için
Gayan Weerakutti

Yanıtlar:


1241

-xHerhangi bir görevi hariç tutan komut satırı argümanını kullanmalısınız .

Deneyin:

gradle build -x test 

Güncelleme:

Peter'ın yorumundaki bağlantı değişti. İşte şeması gelen Gradle kullanıcı kılavuzunun


45
Bu doğru cevap. 'gradle assemble' diğer birçok görevi de dışarıda bırakacak. Bir fikir edinmek için bu şemaya bakın . Tipik gerçek yaşam yapıları için, 'kepçe montajı' daha da fazla görev bırakacaktır.
Peter Niederwieser

13
@PeterNiederwieser bağlantısı artık geçerli değil. Muhtemelen bu şemaya atıfta bulundu: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

9
-x integTestMaven'in battaniyesi kadar uygun değil, örneğin eklemeniz gerekebilir -DskipTests.
Jesse Glick

1
@c_maker, tutulma nasıl yapılır?
rinuthomaz

Sınıf dosyasını yürütmek mümkün mü? Yani, runMerhaba programımın etkisini görebiliyorum. Ama bence her şeyi tekrar derliyor. Sadece java programını yürütmek istiyorum.
Sigur

107

Deneyin:

gradle assemble

Projeniz için kullanılabilir tüm görevleri listelemek için şunları deneyin:

gradle tasks

GÜNCELLEME:

Bu başlangıçta en doğru cevap gibi görünmeyebilir, ancak gradle tasksçıktıyı veya dokümanları dikkatlice okuyun .

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

8
Ünite testlerinizde hata ayıklama durumunda ek bir ipucu olarak: gradle assembleana dosyaları derlemez. Eğer birim test sabit almak için çalışıyorsanız o zaman ihtiyacınız gradle assemble testClasses- Ben inşa görev adlandırma oldukça kafa karıştırıcı olduğunu düşünüyorum.
Martin

36

Kabul edilen cevap doğrudur.

OTOH, bunu daha önce çözdüğüm yol, tüm projelere aşağıdakileri eklemekti:

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

Derlemeyi çalıştırdığınızda -Dskip.tests=truetüm test görevleri atlanır.


3
Benim için bu tek çalışma seçeneği, çünkü -x testi sadece başlangıç ​​projesi üzerinde çalışıyor gibi görünüyor, ancak çoklu proje yapısındaki bağımlılıklar için değil (2. sınıfta test edildi). Test.onlyif ... komutunu kök build.gradle içindeki bir configure (subprojects.findAll {javaProjects.contains (it.name)}) {} bloğuna koyun ve tüm projeler için çalışacaktır.
timm

İyi bir. Bu şekilde kullanıcıları maven aşina olur.
AlexR

23

Sen şu satırları ekleyebilirsiniz build.gradle, **/*dışlayan tüm testler.

test {
    exclude '**/*'
}

2
Bu en iyi cevap IMHO
Marco Sulla

1
Teşekkürler! cevabınız yardımcı oldu.
JAY PATEL


4

Referans

Herhangi bir görevi sınıftan hariç tutmak için -xkomut satırı seçeneğini kullanın. Aşağıdaki örneğe bakın

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'
}

Çıktı: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Umarım bu size temel


lütfen sayfanın ekran görüntüsünü gönderin. nerede bu kod satırı koymak için bilmiyorum ....
Hossein Mansouri

Bu kod parçası build.gradle gitmek gerekir :)
Suganthan Madhavan Pillai

2

projedeki test görevlerini devre dışı bırakmanın farklı yolu:

tasks.withType(Test) {enabled = false}

bir projenin (veya proje grubunun) birinde testleri devre dışı bırakmak istiyorsanız bazen bu davranış gerekir.

Bu şekilde sadece bir java 'testi' için değil, her türlü test görevi için çalışır. Ayrıca, bu şekilde güvenlidir. Demek istediğim şu diyelim: farklı dillerde bir dizi projeniz var: bu tür bir kaydı ana olarak eklemeye çalışırsak build.gradle:

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

test adı verilen bir görevimiz yoksa bir projede başarısız olacağız


2

Kullanılması -x testatlama test yürütme ancak bu da test kodu derleme dahil değildir.

gradle build -x test 

Bizim durumumuzda, bir hedefin derlenmesi ve bir sonraki hedefin test edilmesi (Build -> Test) olan bir CI / CD sürecimiz var.

Bu nedenle, ilk Buildhedefimiz için tüm projenin iyi derlenmesini sağlamak istedik. Bunun için kullandık:

./gradlew build testClasses -x test

Bir sonraki hedefte sadece testler yapıyoruz.


0
gradle build -x test --parallel

Makinenizde birden fazla çekirdek varsa. Ancak, paralel temizleme kullanılması önerilmez.


0

Lütfen şunu deneyin:

gradlew -DskipTests=true build


6
@KirankumarDafda - hayır. Mevcut bir cevap kabul edilmiş olsa bile, istediğiniz zaman bir cevap gönderebilirsiniz. Yeni cevap kabul edilen cevaptan daha iyi olabilir veya farklı bir şekilde çözebilir veya başkalarına yardım edebilir. Yorumdan .
Wai Ha Lee

@WaiHaLee Yorumumu düzenleyemiyorum, ancak yeni kullanıcılar için öneriler aldığımda, diğer kullanıcıların bu cevabın veya kodun neden yararlı olup olmadığını kontrol edebilmesi için daha fazla açıklama içeren cevaplar eklemeyi denemek istedim.
Kirankumar Dafda

0

In Java Plugin :

$ 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.

Testsiz Gradle build iki seçeneğiniz vardır:

$ gradle assemble
$ gradle build -x test

ama derleme testi istiyorsanız:

$ gradle assemble testClasses
$ gradle testClasses
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.