205 votes

Comment puis-je obtenir mon Maven Integration des tests à exécuter

J'ai un maven2 multi-module de gestion de projets et dans chacun de mes enfants modules j'ai JUnit tests qui sont nommées Test.java et Integration.java pour les tests unitaires et les tests d'intégration, respectivement. Quand j'execute:

mvn test

tous les tests JUnit *Test.java des enfants dans l'modules sont exécutés. Quand j'execute

mvn test -Dtest=**/*Integration

aucun des Integration.java tests d'obtenir de l'exécuter à l'intérieur de l'enfant modules.

Ceux-ci semblent comme exactement la même commande pour moi, mais l'un avec l' -Dtest=/Intégration* ne fonctionne pas, il affiche 0 tests en cours d'exécution au niveau du parent, qui n'y a pas des tests

293voto

Kief Points 1772

Le cycle de vie de Maven build inclut désormais la "integration-test" de la phase de l'exécution des tests d'intégration, qui sont gérés séparément de l'unité d'exécution des tests pendant le "test" de la phase. Il s'exécute après le "package", donc si vous l'exécutez "mvn vérifier", "mvn install", ou "mvn deploy", les tests d'intégration sera exécuté le long du chemin.

Par défaut, integration-test test s'exécute classes nommées **/IT*.java, **/*IT.java, et **/*ITCase.java, mais cela peut être configuré.

Pour plus de détails sur la façon de câbler tout cela, voir le Failsafe plugin, le Failsafe l'utilisation de la page (n'est pas correctement relié à partir de la page précédente que j'écris ceci), et également de vérifier cette Sonatype blog.

130voto

serg10 Points 10157

Vous pouvez configurer Surefire de Maven pour exécuter des tests unitaires et intégration teste séparément. Dans la phase de test d’unité standard vous tout ce qui ne pas modèle match exécuter un test d’intégration. Vous puis créez une deuxième phase de test qui s’exécute juste les tests d’intégration.

Voici un exemple :

71voto

HDave Points 6943

J’ai fait exactement ce que vous voulez faire et il fonctionne très bien. Tests unitaires «  Tests » toujours exécuter, et «  IntegrationTests » seulement exécuter quand vous faites un mvn vérifier ou mvn installer. Ici on l’extrait de mon POM. serg10 presque eu droit... mais pas tout à fait.

Bonne chance !

36voto

John Dobie Points 919

Vous pouvez les séparer très facilement en utilisant JUnit catégories et Maven.
Ceci est montré très, très brièvement ci-dessous par le fractionnement des tests unitaires et d'intégration.

Définir Un Marqueur De L'Interface

La première étape dans le regroupement d'un test à l'aide de catégories est de créer une interface marqueur.
Cette interface sera utilisée pour marquer tous les tests que vous souhaitez exécuter en tant qu'tests d'intégration.
public interface IntegrationTest {}

Marquez vos classes de test

Ajouter la catégorie d'annotation vers le haut de votre classe de test. Elle prend le nom de votre nouvelle interface.

import org.junit.experimental.categories.Category;<br>
@Category(IntegrationTest.class)
public class ExampleIntegrationTest{
@Test
public void longRunningServiceTest() throws Exception {
 }
}

Configurer Maven Tests Unitaires

La beauté de cette solution est que rien ne change vraiment pour le test de l'unité côté des choses.
Nous avons simplement ajouter un peu de configuration pour le maven plugin surefire pour se rendre à ignorer les tests d'intégration.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<dependencies>
 <dependency>
  <groupId>org.apache.maven.surefire</groupId>
  <artifactId>surefire-junit47</artifactId>
  <version>2.12</version>
 </dependency>
</dependencies>
<configuration>
 <includes>
  <include>**/*.class</include>
 </includes>
 <excludedGroups>com.test.annotation.type.IntegrationTest</excludedGroups>
</configuration>
</plugin>
</pre>

Lorsque vous faites un mvn clean tester votre banalisée tests unitaires d'exécution.

Configurer Maven Tests D'Intégration

De nouveau cette configuration est très simple.
Nous utilisons la norme de sécurité intégrée de plugin et de le configurer pour seulement exécuter les tests d'intégration.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<dependencies>
 <dependency>
  <groupId>org.apache.maven.surefire</groupId>
  <artifactId>surefire-junit47</artifactId>
  <version>2.12</version>
 </dependency>
</dependencies>
<configuration>
 <includes>
  <include>**/*.class</include>
 </includes>
 <excludedGroups>com.test.annotation.type.IntegrationTest</excludedGroups>
</configuration>
</plugin>

La configuration utilise un standard de l'exécution but d'exécuter le failsafe plugin lors de l'intégration de la phase de la construction.

Vous pouvez maintenant faire un mvn clean install
Cette fois, ainsi que les tests unitaires en cours d'exécution, l'intégration, les tests sont exécutés au cours de l'intégration-phase de test.

18voto

James Kingsbery Points 3460

Vous devriez essayer en utilisant maven plugin de sécurité intégrée. Vous pouvez lui dire d’inclure un certain ensemble de tests.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X