Kompilacja stopniowa bez testów

635

Chcę wykonać gradle buildbez wykonywania testów jednostkowych. Próbowałem:

$ gradle -Dskip.tests build

To wydaje się nic nie robić. Czy jest jakieś inne polecenie, którego mógłbym użyć?

Dave
źródło
1
Może to pomoże ci Gradle Buil bez testów
nieuczciwy chłopak
Czy używasz Java?
Naga
2
-DskipTestsjest dla Maven
Gayan Weerakutti

Odpowiedzi:

1239

Powinieneś użyć -xargumentu wiersza poleceń, który wyklucza dowolne zadanie.

Próbować:

gradle build -x test 

Aktualizacja:

Link w komentarzu Piotra zmienił się. Oto schemat z podręcznika użytkownika Gradle

c_maker
źródło
45
To jest poprawna odpowiedź. „Gromadzenie stopni” pominie także wiele innych zadań. Zobacz ten schemat, aby uzyskać pomysł. W przypadku typowych rzeczywistych wersji „stopniowy montaż” pominie jeszcze więcej zadań.
Peter Niederwieser
13
Link z @PeterNiederwieser nie jest już ważny. Prawdopodobnie odwoływał się do tego diagramu: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.
9
Działa, chociaż może być konieczne dodanie np . -x integTestItd -DskipTests. , Więc nie jest tak wygodny jak koc Mavena .
Jesse Glick,
1
@c_maker, Jak wykonać to z zaćmienia?
rinuthomaz
Czy można wykonać plik klasy? Mam na myśli to, runże widzę efekt mojego programu Hello. Ale myślę, że wszystko kompiluje ponownie. Chciałbym tylko uruchomić program Java.
Sigur,
107

Próbować:

gradle assemble

Aby wyświetlić listę wszystkich dostępnych zadań dla twojego projektu, spróbuj:

gradle tasks

AKTUALIZACJA:

Na początku może to nie wydawać się najbardziej poprawna odpowiedź, ale uważnie przeczytaj gradle taskswyniki lub dokumenty.

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
Emil Sit
źródło
8
Jako dodatkowa wskazówka w przypadku debugowania testów jednostkowych: gradle assemblenie skompiluje głównych plików. Jeśli pracujesz nad naprawą testu jednostkowego, potrzebujesz gradle assemble testClasses- myślę, że nazewnictwo zadania kompilacji jest dość mylące.
Martin
36

Przyjęta odpowiedź jest poprawna.

OTOH, sposobem, w jaki wcześniej to rozwiązałem, było dodanie następujących elementów do wszystkich projektów:

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

Uruchom kompilację za pomocą, -Dskip.tests=truea wszystkie zadania testowe zostaną pominięte.

David Resnick
źródło
3
Dla mnie jest to nadal jedyna działająca opcja, ponieważ test -x wydaje się działać tylko na początkowym projekcie, ale nie na zależności w kompilacji wielu projektów (testowane w klasie 2.1). Umieść test.onlyif ... w bloku configure (podprojekty.findAll {javaProjects.contains (it.name)}) {} w głównym pliku build.gradle i będzie działał dla wszystkich projektów.
timm
Dobry. Ten sposób jest znany użytkownikom maven.
AlexR
23

Możesz dodać następujące wiersze build.gradle, **/*wykluczając wszystkie testy.

test {
    exclude '**/*'
}
Guisong He
źródło
2
To najlepsza odpowiedź IMHO
Marco Sulla
1
Dzięki! twoja odpowiedź była pomocna.
JAY PATEL
4

Odniesienie

Aby wykluczyć dowolne zadanie ze stopni, użyj -xopcji wiersza polecenia. Zobacz poniższy przykład

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

Wyjście: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Mam nadzieję, że to da ci podstawy

Suganthan Madhavan Pillai
źródło
prześlij zrzut ekranu strony. nie wiem, gdzie umieścić ten wiersz kodu ....
Hossein Mansouri,
Ten fragment kodu powinien znaleźć się w twoim build.gradle :)
Suganthan Madhavan Pillai 28.04.17
2

innym sposobem wyłączenia zadań testowych w projekcie jest:

tasks.withType(Test) {enabled = false}

takie zachowanie jest czasami potrzebne, jeśli chcesz wyłączyć testy w jednym projekcie (lub grupie projektów).

W ten sposób działa na wszelkiego rodzaju zadania testowe, a nie tylko na „testach” java. Również ta droga jest bezpieczna. Oto, co mam na myśli, powiedzmy: masz zestaw projektów w różnych językach: jeśli spróbujemy dodać tego rodzaju zapis w głównym build.gradle:

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

poniesiemy porażkę w projekcie, jeśli nie będziemy mieli zadania zwanego testami

Siergiej Jakowlew
źródło
2

Korzystanie z -x testpomijania wykonywania testu, ale wyklucza to również kompilację kodu testowego.

gradle build -x test 

W naszym przypadku mamy proces CI / CD, w którym jednym celem jest kompilacja, a kolejnym testowanie (kompilacja -> test).

Tak więc dla naszego pierwszego Buildcelu chcieliśmy zapewnić, aby cały projekt był dobrze skompilowany. W tym celu wykorzystaliśmy:

./gradlew build testClasses -x test

Przy kolejnym celu po prostu przeprowadzamy testy.

Federico Piazza
źródło
0
gradle build -x test --parallel

Jeśli Twoja maszyna ma wiele rdzeni. Jednak nie zaleca się używania czyszczenia równoległego.

Yan Khonski
źródło
0

Spróbuj tego:

gradlew -DskipTests=true build

Sarath Babu Polavarapu
źródło
6
@KirankumarDafda - nie. Możesz opublikować odpowiedź w dowolnym momencie, nawet jeśli istniejąca odpowiedź została zaakceptowana. Nowa odpowiedź może być lepsza niż odpowiedź zaakceptowana lub rozwiązać ją w inny sposób lub w inny sposób pomóc innym. Z recenzji .
Wai Ha Lee,
@WaiHaLee Nie mogę edytować mojego komentarza, ale ponieważ otrzymałem sugestie dla nowych użytkowników, chciałem wyjaśnić, że staram się dodawać odpowiedzi z dodatkowymi wyjaśnieniami, aby inny użytkownik mógł sprawdzić, czy ta odpowiedź lub kod jest dla nich pomocny.
Kirankumar Dafda
0

We wtyczce 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.

Wersja Gradle bez testu masz dwie opcje:

$ gradle assemble
$ gradle build -x test

ale jeśli chcesz wykonać test kompilacji:

$ gradle assemble testClasses
$ gradle testClasses
Arnau Sistach Reinoso
źródło