Existe-t-il un moyen de séparer les opérations longues (par exemple, les tests de résistance) afin qu'elles ne soient pas exécutées par défaut dans Maven 2?

StackOverflow https://stackoverflow.com/questions/251730

Question

Nous avons un besoin permanent auquel je n'arrive pas à comprendre comment utiliser les outils et la documentation Maven 2 standard.

Certains de nos développeurs ont des tests JUnit très longs (généralement des tests de résistance) qui ne doivent en aucun cas être exécutés de manière régulière dans le processus de construction / la construction nocturne.

Bien sûr, nous pouvons utiliser le mécanisme d'exclusion du plugin infaillible et les renvoyer de la construction, mais idéalement, nous aimerions quelque chose qui permettrait au développeur de les exécuter à volonté via Maven 2.

Était-ce utile?

La solution

Normalement, vous ajouteriez un profil à votre configuration Maven qui exécute un ensemble de tests différent:

exécuter ceci avec mvn -Pintegrationtest install

    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

Autres conseils

Ajoutant à la réponse de krosenvold , pour éviter tout comportement inattendu, assurez-vous de disposer également d'un profil par défaut, actif par défaut, qui exclut l'intégration ou stresstests voulez courir dans votre profil spécial.

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

Vous aurez besoin de créer un profil comme celui-ci. Il suffit de lister le plugin surefire en dehors d'un profil qui le remplacera s'il est sélectionné avec:

mvn -P integrationtest clean install

Utilisez un plug-in de test d'intégration tel que le Test d'intégration très utile à Tests d'intégration distincts (exécution longue, systémique) du test unitaire (les puristes disent 30 secondes maximum pour l'exécution de tous les tests unitaires réels). Créez deux packages Java pour vos tests unitaires par rapport aux tests d'intégration.

Ensuite, ne liez pas ce plugin à une phase (le cycle de vie normal de Maven) et ne l'exécutez que lorsqu'il est explicitement appelé en tant que cible, comme ceci: mvn merde: nettoyer merde: installer merde: test

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

De cette façon, vos développeurs normaux ne seront pas affectés et vous pourrez exécuter des tests d'intégration à la demande.

Une autre option consiste à faire en sorte que le test d'effort détecte qu'il fonctionne sous maven et n'exécute qu'une ou deux fois. c'est-à-dire se transformer en un test fonctionnel régulier. De cette façon, vous pouvez vérifier que le code est toujours correct, mais qu'il ne sera pas exécuté longtemps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top