2016-09-06 3 views
-1

Je suis les instructions: http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.htmlà l'exclusion des tests JUnit dans maven

et je me sers du mon pom.xml ne comprennent pas, mais il ne semble pas fonctionner.

Voici l'extrait:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
     <argLine>${surefireArgLine}</argLine> 
     <excludes> 
     <exclude>${project.basedir}Test1.java</exclude> 
     </excludes> 
    </configuration> 
</plugin> 
+0

quand je l'appelle mvn mvn installation propre - dois-je gIV e un argument spécifique pour inclure le 'exclure'? –

+0

Etes-vous en train d'essayer d'exclure tous les tests ou seulement ceux dont les noms de fichiers correspondent à certains Regex? –

Répondre

1

Si votre fichier de classe de test est nommé Test1.java il sera automatiquement inclus en tant que classe de test par Surefire car il correspond au caractère générique **/Test*.java (un des paramètres par défaut inclus, consultez la lien dans votre question). Si vous souhaitez exclure un test particulier, vous devez modifier votre tag <exclude> car il y a 2 problèmes avec celui-ci.

(1) vous n'avez pas un séparateur entre le basedir (par exemple ${project.basedir}/Test1.java

(2) Les classes en maven sont généralement dans une structure de répertoire (également un s'il y a un paquet autre que la valeur par défaut .. .. qui devrait être) Par exemple, quelque chose comme ${project.basedir}/src/test/java/com/foo/Test1.java

Votre exclure devrait vraiment utiliser des caractères génériques ainsi:

<exclude>**/Test1.java</exclude>

Si au contraire, vous voulez juste sauter tous les tests que vous pouvez utiliser l'argument skipTests:

mvn clean install -DskipTests

0

${project.basedir} fait référence au dossier racine du module/project. Donc, si Test1 se trouve sous le dossier racine, il sera sûrement exclu par l'objectif de surefire default-test, une fois que vous corrigez votre déclaration d'exclusion à <exclude>${project.basedir}/Test1.java</exclude>.

Si le dossier racine n'est pas l'endroit où Test1 se trouve la carte puis l'emplacement de Test1 avec d'autres variables POM Maven here ou utiliser le caractère générique à la place, comme suit:

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <argLine>${surefireArgLine}</argLine> 
        <excludes> 
         <exclude>**/Test1.java</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
     </plugins> 
</build> 

Ou façon plus propre est de create the property for the tests to exclude et de l'utiliser dans le cadre de maven configuration du plugin surefire comme suit:

<properties> 
     <exclude.tests>**/Test1.java</exclude.tests> 
</properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <argLine>${surefireArgLine}</argLine> 
        <excludes> 
         <exclude>${exclude.tests}</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build>