Esiste un modo per separare la corsa lunga (ad esempio gli stress test) in modo che non vengano eseguiti per impostazione predefinita in Maven 2?

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

Domanda

Abbiamo avuto una continua necessità qui che non riesco a capire come affrontare utilizzando gli strumenti e la documentazione di stock Maven 2.

Alcuni dei nostri sviluppatori hanno test JUnit molto lunghi (di solito stress test) che in nessun caso dovrebbero essere eseguiti come parte normale del processo di compilazione / build notturna.

Naturalmente possiamo usare il meccanismo di esclusione del plugin surefire e semplicemente puntarli dalla build, ma idealmente ci piacerebbe qualcosa che consentirebbe allo sviluppatore di eseguirli a piacimento attraverso Maven 2.

È stato utile?

Soluzione

Normalmente aggiungi un profilo alla tua configurazione maven che esegue un diverso set di test:

esegui questo con 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>

Altri suggerimenti

Aggiungendo alla risposta di krosenvold , per evitare comportamenti imprevisti, assicurati di avere anche un profilo predefinito attivo per impostazione predefinita che esclude l'integrazione o lo stress test vuoi correre nel tuo profilo speciale.

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

Dovrai creare un profilo come questo, semplicemente elencando il plugin surefire al di fuori di un profilo si sovrascriverà il profilo se fosse selezionato con:

mvn -P integrationtest clean install

Utilizza un plug-in di test di integrazione come Test di integrazione super utile Thingy per Test di integrazione separati (di lunga durata, sistemici) dal Test unitario (i puristi sostengono 30 secondi al massimo per l'esecuzione di tutti i test unitari reali). Crea due pacchetti Java per i test unitari rispetto ai test di integrazione.

Quindi non associare questo plugin a una fase (il normale ciclo di vita di Maven) ed eseguirlo solo quando viene esplicitamente chiamato come target, in questo modo: mvn shitty: clean shitty: install shitty: test

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

In questo modo, i tuoi normali sviluppatori non saranno interessati e sarai in grado di eseguire test di integrazione su richiesta.

Un'altra opzione è quella di fare in modo che lo stress test rilevi che è in esecuzione in Maven ed eseguire solo una o due volte. cioè trasformarsi in un normale test funzionale. In questo modo puoi verificare che il codice sia ancora valido, ma non venga eseguito a lungo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top