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?


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 

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

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>

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

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/


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


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 .


17

Vous n'avez qu'à fournir

-Dmaven.test.skip

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


13

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

entrez la description de l'image ici


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>

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


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.


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


2

Pour le package maven sans infecter le test maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>

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!


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.


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.



-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 :)


1
Si vous cliquez sur package, il exécute les tests, ce que OP essaie d'éviter
Charlie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.