Construction Gradle sans tests

636

Je veux exécuter gradle buildsans exécuter les tests unitaires. J'ai essayé:

$ gradle -Dskip.tests build

Cela ne semble rien faire. Y a-t-il une autre commande que je pourrais utiliser?

Dave
la source
1
Peut-être que cela vous aide à Gradle Buil sans tests
rogue lad
Utilisez-vous Java ??
Naga
2
-DskipTestsest pour Maven
Gayan Weerakutti

Réponses:

1241

Vous devez utiliser l' -xargument de ligne de commande qui exclut toute tâche.

Essayer:

gradle build -x test 

Mise à jour:

Le lien dans le commentaire de Peter a changé. Voici le schéma du guide de l'utilisateur Gradle

c_maker
la source
45
Ceci est la bonne réponse. «assemblage gradle» laissera de côté de nombreuses autres tâches aussi. Consultez ce schéma pour vous faire une idée. Pour les constructions typiques de la vie réelle, «l'assemblage graduel» laissera de côté encore plus de tâches.
Peter Niederwieser
13
Le lien de @PeterNiederwieser n'est plus valide. Il faisait probablement référence à ce diagramme: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.
9
Fonctionne bien que vous deviez ajouter par exemple -x integTest, etc., donc pas aussi pratique que la couverture de Maven -DskipTests.
Jesse Glick
1
@c_maker, comment effectuer cela à partir de l'éclipse?
rinuthomaz
Est-il possible d'exécuter le fichier de classe? Je veux dire, avec runje peux voir l'effet de mon programme Hello. Mais je pense qu'il compile tout à nouveau. Je voudrais seulement exécuter le programme java.
Sigur
107

Essayer:

gradle assemble

Pour répertorier toutes les tâches disponibles pour votre projet, essayez:

gradle tasks

MISE À JOUR:

Cela peut ne pas sembler la réponse la plus correcte au début, mais lisez attentivement la gradle taskssortie ou les documents.

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
Emil Sit
la source
8
Comme conseil supplémentaire au cas où vous débogueriez vos tests unitaires: gradle assemblene compilera pas les fichiers principaux. Si vous travaillez à faire corriger votre test unitaire, alors vous avez besoin gradle assemble testClasses- je pense que le nom de la tâche de construction est assez déroutant.
Martin
36

La réponse acceptée est la bonne.

OTOH, la façon dont je l'ai résolu auparavant était d'ajouter les éléments suivants à tous les projets:

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

Exécutez la génération avec -Dskip.tests=trueet toutes les tâches de test seront ignorées.

David Resnick
la source
3
Pour moi, c'est toujours la seule option qui fonctionne car le test -x ne semble fonctionner que sur le projet de départ mais pas pour les dépendances dans une construction multi-projets (testé sur le niveau 2.1). Placez le test.onlyif ... dans un bloc configure (subprojects.findAll {javaProjects.contains (it.name)}) {} dans votre racine build.gradle et cela fonctionnera pour tous les projets.
timm
Bon. Cette méthode est familière aux utilisateurs de maven.
AlexR
23

Vous pouvez ajouter les lignes suivantes à build.gradle, **/*exclut tous les tests.

test {
    exclude '**/*'
}
Guisong He
la source
2
Ceci est la meilleure réponse à mon humble avis
Marco Sulla
1
Merci! votre réponse a été utile.
JAY PATEL
4

Référence

Pour exclure une tâche de Gradle, utilisez l' -xoption de ligne de commande. Voir l'exemple ci-dessous

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

Sortie de: gradle -q dist -x runningTest

task compile
compile test
running distribution job

J'espère que cela vous donnera les bases

Suganthan Madhavan Pillai
la source
veuillez envoyer une capture d'écran de la page. je ne sais pas où mettre cette ligne de code ....
Hossein Mansouri
Ce morceau de code devrait aller dans votre build.gradle :)
Suganthan Madhavan Pillai
2

la manière différente de désactiver les tâches de test dans le projet est la suivante:

tasks.withType(Test) {enabled = false}

ce comportement est parfois nécessaire si vous souhaitez désactiver les tests dans l'un d'un projet (ou du groupe de projets).

De cette façon, il fonctionne pour toutes sortes de tâches de test, pas seulement pour des «tests» java. De plus, cette façon est sûre. Voici ce que je veux dire, disons: vous avez un ensemble de projets dans différentes langues: si nous essayons d'ajouter ce type d'enregistrement en principal build.gradle:

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

nous échouerons dans un projet quand si nous n'avons aucune tâche appelée tests

Sergey Yakovlev
la source
2

Utiliser l' -x testexécution de test de saut, mais cela exclut également la compilation de code de test.

gradle build -x test 

Dans notre cas, nous avons un processus CI / CD où un objectif est la compilation et le prochain objectif est le test (Build -> Test).

Donc, pour notre premier Buildobjectif, nous voulions nous assurer que l'ensemble du projet se compile bien. Pour cela, nous avons utilisé:

./gradlew build testClasses -x test

Sur le prochain objectif, nous exécutons simplement des tests.

Federico Piazza
la source
0
gradle build -x test --parallel

Si votre machine a plusieurs cœurs. Cependant, il n'est pas recommandé d'utiliser le nettoyage parallèle.

Yan Khonski
la source
0

Veuillez essayer ceci:

gradlew -DskipTests=true build

Sarath Babu Polavarapu
la source
6
@KirankumarDafda - non. Vous pouvez publier une réponse quand vous le souhaitez, même si une réponse existante a été acceptée. La nouvelle réponse pourrait être meilleure que la réponse acceptée, ou la résoudre d'une manière différente, ou autrement aider les autres. De l'avis .
Wai Ha Lee
@WaiHaLee Je ne peux pas modifier mon commentaire, mais comme j'ai reçu des suggestions pour de nouveaux utilisateurs, je voulais expliquer que j'essayais d'ajouter des réponses avec plus de clarifications afin que les autres utilisateurs puissent vérifier si cette réponse ou ce code leur était utile.
Kirankumar Dafda
0

Dans le 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.

Construction Gradle sans test, vous avez deux options:

$ gradle assemble
$ gradle build -x test

mais si vous voulez compiler le test:

$ gradle assemble testClasses
$ gradle testClasses
Arnau Sistach Reinoso
la source