2012-05-11 1 views
2

Je suis à la recherche d'exécuter des tests intégrés dans maven et les regrouper par catégorie en utilisant quelque chose comme ceci:Utilisation de Maven avec le plugin failsafe pour exécuter des tests catégorisés

Interface:

package com.path.for.testing; 

public interface SlowTests { 

} 

Classe d'essai:

import com.path.for.testing.SlowTests 

@Category(SlowTests.class) 
public class SlowTest { 
    ... 
} 

Pom fichier:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    ... 
    <profiles> 
    ... 
    <profile> 
     <id>functional-test-slow-tests</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
     <plugins> 
     <plugin> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <executions> 
      <execution> 
       <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
       </goals> 
       <configuration> 
       <groups>com.path.for.testing.SlowTests</groups> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
     </build> 
    </profile> 
    </profiles> 
</project> 

Et je le lance avec: mvn clean install -P test-test-lent-tests

Mon problème est que lorsqu'il est exécuté, il semble parcourir tous les tests, pas seulement ceux spécifiés. La catégorisation ne fonctionne-t-elle pas sur des tests intégrés? Ou est-ce que je fais quelque chose de mal? Je mettrai à jour avec plus d'informations comme demandé. Toute aide ou direction sur ce problème est vraiment appréciée, je suis nouveau à cela et il est très possible que je manque quelque chose d'évident. Merci.


Modifier en réponse à User944849:

Lors de l'exécution avec un argument -X, je pense que le plug-in est failsafe CHAISE plusieurs fois. J'ai également ajouté le nouvel ID d'exécution que vous avez suggéré. C'est ce que je reçois lorsque le projet est construit:

[DEBUG] ----------------------------------------------------------------------- 
[DEBUG] Goal:   org.apache.maven.plugins:maven-failsafe-plugin:2.12:integration-test (default-integration-tests) 
[DEBUG] Style:   Regular 
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> 

... 

[DEBUG] ----------------------------------------------------------------------- 
[DEBUG] Goal:   org.apache.maven.plugins:maven-failsafe-plugin:2.12:verify (default-integration-tests) 
[DEBUG] Style:   Regular 
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?> 

Les tests utilisent la nouvelle ID que vous suggérez, mais je suis toujours obtenir le même résultat, à savoir les tests indésirables sont encore en cours d'exécution.

+0

Avez-vous vérifié que JUnit 4.7+ est configuré? Ou utilisez-vous TestNG? – khmarbaise

Répondre

2

Si vous exécutez avec -X, voyez-vous plusieurs exécutions du plug-in failsafe? La configuration indiquée n'inclut pas de <id>, donc Maven peut ajouter votre exécution configurée à sa valeur par défaut. La valeur par défaut exécute tous les tests correspondant aux modèles **/IT*.java, **/*IT.java, **/*ITCase.java.

Si tel est ce qui se passe, l'ajout d'un <id> à l'exécution comme ceci:

<execution> 
    <id>default-integration-tests</id> 
    .... 

va redéfinir l'exécution du plugin par défaut de Maven pour la phase d'intégration-tests pour faire ce que vous voulez.


Mise à jour

@Brad, merci pour tester ma théorie, et @khmarbaise merci de me donner une autre idée.

Les 2 exécutions de but sont ce que vous devriez avoir. Je ne vois rien de mal avec votre config donc j'ai vérifié les JIRA ouverts pour le plugin failsafe et j'ai trouvé un possibly related issue qui pourrait être à l'origine du mauvais fournisseur JUnit. Si c'est ce que vous rencontrez, vous devrez peut-être spécifier manuellement le fournisseur JUnit47 dans la configuration du plugin comme défini here.

+0

Merci pour votre aide, j'ai mis à jour ma question en réponse à cela. S'il vous plaît, jetez un oeil. – Brad

+0

Hey, j'étais dehors pour le week-end et je n'ai pas eu l'occasion de répondre, mais merci pour cela, votre mise à jour a identifié le problème.En fait, j'avais déjà testé la version de JUnit que j'utilisais, mais apparemment, si vous ne spécifiez pas explicitement le numéro de version ou la propriété parallèle, il revient à avant que les groupes ne soient supportés et que le groupe soit ignoré. Merci encore, je tirais vraiment mes cheveux sur celui-ci. – Brad

Questions connexes