Package / installation Maven sans test (sauter les tests)

343

J'essaie d'emballer mon projet. Mais, il exécute automatiquement les tests précédents en effectuant l'emballage. Les tests insèrent du contenu dans la base de données. Ce n'est pas ce que je veux, je dois éviter d'exécuter des tests lors du package de l'application. Quelqu'un sait comment exécuter le package sans test?

vks
la source
13
Un test unitaire doit comprendre les 4 phases suivantes: initialisation, test, vérification et démontage. Vous devriez peut-être ajuster vos tests et ajouter un démontage / nettoyage correspondant de votre base de données ou utiliser une instance de base de données distincte, non fournie avec votre fichier jar, pour exécuter vos tests.
Marc-Christian Schulze du
Il semble que vos tests soient "lourds", donc vous ne voulez pas les exécuter. Mais c'est une mauvaise pratique. Peut-être que certains frameworks comme DBUnit peuvent vous aider? Ou vous pouvez annuler les modifications de la base de données à la fin du test?
Mickael Marrache

Réponses:

575

Exécutez maven avec

mvn package -Dmaven.test.skip=true 
Giorgos Dimtsas
la source
1
merci pour votre réponse immédiate, je cours depuis éclipse, où j'ajoute la commande -Dmaven.test.skip = true?
vks
10
Je n'ai jamais lancé mvn depuis eclipse, mais dans la fenêtre Exécuter la configuration où vous configurez les cibles et les profils de maven, il y a une case à cocher «Ignorer le test». Peut-être que cela fera l'affaire.
Giorgos Dimtsas
9
selon la documentation qui ignorera la compilation ainsi que l'exécution. Vous pouvez utiliser -DskipTests pour ignorer simplement l'exécution. Ce message donne également des avertissements sur les versions avec
lesquelles
1
Merci beaucoup, je le faisais en utilisant -DskipTestsmais ça ne marche plus, une idée pourquoi?
sam
7
Notez que la documentation de Maven Surefire Plugin et Maven Failsafe Plugin suggère que le réglage skipTestsest préférable au réglage maven.test.skip.
Filip Bártek
173

Fournissez simplement la commande mentionnée ci-dessous qui ignorera l'exécution des cas de test,

mvn package -DskipTests
Jayakumar J
la source
4
pour moi, cela ne fonctionnerait pas. J'ai dû utiliser une solution acceptée à la place
Sebas
1
-DskipTestsn'a pas fonctionné pour moi quand j'ai utilisémvn clean install -DskipTests
Vishrant
1
Son partiellement bien car il n'exécutera pas de test MAIS il comilera les classes de test .....
Antoniossss
Pour les abonnés, -DskipTestsc'est la même chose que -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 et oui, il compile les tests et ne les exécute pas (alors -Dmaven.test.skip=truequ'il ne les compile pas)
rogerdpack
47

vous pouvez ajouter cette configuration de plugin à votre pom si vous ne souhaitez pas définir l'argument de ligne de commande:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>
smp7d
la source
3
Vous ne pouvez plus exécuter les tests à partir de la ligne de commande avec cette configuration.
Emmanuel Bourg
1
@EmmanuelBourg Cela peut être résolu en suivant les instructions de cet exemple maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d
41

Notez que -Dmaven.test.skip empêche Maven de construire l'artefact de test-jar.

Si vous souhaitez ignorer les tests mais créer des artefacts selon une utilisation de build normale:

-Dmaven.test.skip.exec
Chris Beach
la source
1
C'était la réponse que je cherchais, fonctionne très bien.Merci.
Binita Bharati
Comment diable suis-je censé m'en souvenir? Pourquoi ne pas créer un alias simple et évident comme "skipTests"?
TheRealChx101
33

Si vous essayez ceci dans Windows Powershell, vous obtiendrez cette erreur:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

La raison en est que, dans Powershell, le " -" a une signification particulière et qu'il pose problème avec maven.

La solution est de l'ajouter avec un backtick (`), comme ça ..

mvn `-Dmaven.test.skip=true install 

Référence: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/

Rosdi Kasim
la source
1
J'ai eu le même problème et cela l'a résolu pour moi. THX.
ns du
26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

est également un moyen d'ajouter un fichier pom

vimal krishna
la source
18

Vous pouvez passer l' maven.test.skipindicateur en tant qu'argument JVM, pour ignorer l'exécution des tests lorsque la phase du package (et les précédentes du cycle de vie par défaut) est exécutée:

mvn package -Dmaven.test.skip=true

Vous pouvez également passer le skipTestsdrapeau seul à l'exécutable mvn. Si vous souhaitez inclure ces informations dans votre POM, vous pouvez créer un nouveau profil dans lequel vous pouvez configurer le maven-surefire-pluginpour ignorer les tests .

Vineet Reynolds
la source
17

Vous n'avez qu'à fournir

-Dmaven.test.skip

Vous n'avez plus besoin d'ajouter =true.

Adriaan Koster
la source
13

Dans Inllij IDEA, il est également possible d'ignorer l'objectif de test.

entrez la description de l'image ici

Dushmantha
la source
11

Répondre à une question ancienne et acceptée ici. Vous pouvez ajouter ceci dans votre pom.xml si vous voulez éviter de passer tout le temps un argument de ligne de commande:

  <properties>
    <skipTests>true</skipTests>
  </properties>
anubhava
la source
11

Vous pouvez ajouter une -DskipTestsou -Dmaven.test.skip=trueplusieurs mvncommandes pour ignorer les tests. Dans votre cas, ce serait comme ci-dessous:

mvn package -DskipTests

OU

mvn package -Dmaven.test.skip=true
Sahil Chhabra
la source
5

juste mvn clean install -DskipTests

Ravinda lakshan
la source
4

Les tests doivent toujours [1] s'exécuter avant le package. Si vous devez désactiver les tests, vous faites quelque chose de mal. En d'autres termes, vous essayez de résoudre le mauvais problème. Déterminez quel est réellement votre problème et posez cette question. On dirait que c'est lié à la base de données.

[1] Vous pouvez ignorer les tests lorsque vous devez générer rapidement un artefact pour une utilisation locale en développement, mais en général, la création d'un artefact doit toujours suivre une exécution de test réussie.

Ryan Stewart
la source
J'ai un problème similaire: mes applications contiennent websocket. Lorsque je lance mvn clean install, je me retrouve dans une série de tests sans fin. Avant que je ne le ferme, le processus durait depuis 3 heures et les messages imprimés portaient sur Websocket. Pouvez-vous s'il vous plaît vérifier mon problème pour voir ce que je fais mal? stackoverflow.com/questions/54614739/…
georgeB
Les règles ont toujours des exceptions. Si vous ne le pensez pas, vous vous trompez.
Jay Sullivan
3

Une notation abrégée pour faire des tests de build et de saut de maven serait:

mvn clean install -DskipTests

Sourabh Bhavsar
la source
2

Pour le package maven sans infecter le test maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
igonejack
la source
Merci, j'avais besoin exactement de cela aujourd'hui.
Sean McMillan
1

Vous le faites évidemment de la mauvaise façon. Les tests sont une partie importante du pré-emballage. Vous ne devez pas l'ignorer ou l'ignorer, mais plutôt le faire de la bonne façon. Essayez de changer la base de données dans laquelle il insère les données (comme test_db). La configuration peut prendre un certain temps. Et pour vous assurer que cette base de données peut être utilisée pour toujours, vous devez supprimer toutes les données à la fin des tests. JUnit4 a des annotations qui vous facilitent la tâche. Utilisez les annotations @Before, @After @Test pour les bonnes méthodes. Vous devez y consacrer du temps, mais cela en vaudra la peine!

Ozyman
la source
9
Je pense que la question ainsi que le désir d'emballer sans exécuter de tests sont parfaitement valables. Je ne pense pas que le PO "le fait manifestement dans le mauvais sens". Différentes personnes et projets ont des besoins différents, et ceux-ci ne correspondent généralement pas à la Bible Maven ou aux croyances de diverses personnes (comme vous) sur la façon dont le développement logiciel devrait fonctionner. Je pense que votre réponse serait plus appréciée sans son approche condescendante.
Zero3
1

Dans Intellij, allez dans Affichage -> Fenêtres d'outils -> choisissez Projets Maven. Dans la liste déroulante Lifecyle, cliquez avec le bouton droit sur le package -> choisissez Créer 'votre-projet [package]' ...

Entrez cette valeur: package -Dmaven.test.skip=true -f pom.xmldans le champ Ligne de commande. Cliquez sur Appliquer et un menu déroulant Exécuter les configurations devrait apparaître avec votre commande maven personnalisée créée.

Patrick Tolentino
la source
pourquoi cela a-t-il été rejeté? Je l'utilise à chaque fois que je voulais construire mon projet mais en sautant les tests
Patrick Tolentino
0

mvn clean install -Dmaven.test.skip=true

travaillé pour moi depuis -Dskipne fonctionnait plus.

Aggie Jon de 87
la source
0
mvn package -Dmaven.test.skip=true
mcvkr
la source
-1

La manière la meilleure et la plus simple de le faire, dans IntelliJ Idea dans la fenêtre «Maven Project», et ne cliquez simplement pas sur le bouton de test. J'espère que je t'ai aidé. Bonne journée :)

Vladimir
la source
1
Si vous cliquez sur package, il exécute les tests, ce que OP essaie d'éviter
Charlie