Gibt es einen Weg, um lange zu trennen läuft (zum Beispiel Stresstests) aus, so dass sie standardmäßig in Maven nicht ausgeführt ist 2?

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

Frage

Wir haben einen ständigen Bedarf hier haben, dass ich nicht herausfinden kann, wie mit dem Lager Maven 2-Tools und Dokumentation adressieren.

Einige unserer Entwickler haben einige sehr lange laufen JUnit-Tests (in der Regel Tests betonen), dass unter keinen Umständen als regulären Teil des Build-Prozesses ausgeführt werden soll / jede Nacht bauen.

Natürlich können wir die todsicheren Plugins Ausschlussmechanismus verwenden und sie nur aus dem Build Punt, sondern im Idealfall würden wir etwas lieben, dass der Entwickler erlauben würde, sie nach Belieben durch Maven 2 zu laufen.

War es hilfreich?

Lösung

Normalerweise würden Sie ein Profil Ihrer Maven-Konfiguration hinzuzufügen, die einen anderen Satz von Tests lautet:

laufen diese mit mvn -Pintegrationtest installieren

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

Andere Tipps

Zusätzlich zu krosenvold 's Antwort, kein unerwartetes Verhalten zu gewährleisten, stellen Sie sicher, dass Sie auch ein Standardprofil haben, die standardmäßig aktiviert ist, dass schließt die Integration oder Stresstests Sie will in Ihrem speziellen Profil laufen.

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

Sie werden ein Profil wie diese erstellen müssen, einfach die Auflistung der todsichere-Plugin außerhalb eines Profils wird das Profil überschreiben sollte es mit ausgewählt werden:

mvn -P integrationtest clean install

einen Integrationstest-Plugin verwenden wie der super hilfsbereit Integrationstest Thingy getrennte Integrationstests (langer Lauf, systemisch) (sagen Puristen maximal 30 Sekunden für alle wahren Unit-Tests zu laufen) von Unit-Test. Machen Sie zwei Java-Pakete für Ihre Unit-Tests im Vergleich zu Integrationstests.

Dann bindet nicht dieses Plugin eine Phase (der normale Maven-Lebenszyklus) und es nur ausgeführt, wenn es ausdrücklich als ein Ziel, wie so genannt wird: mvn shitty:clean shitty:install shitty:test

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

Auf diese Weise Ihre normalen Entwickler werden nicht betroffen sein, und Sie werden in der Lage sein, Integrationstests bei Bedarf ausgeführt werden.

Eine weitere Option ist der Stresstest ermitteln, um es in Maven läuft und nur einmal ausgeführt oder zweimal. das heißt in eine regelmäßige Funktionsprüfung einzuschalten. Auf diese Weise können Sie den Code überprüfen kann, ist immer noch gut, aber nicht für eine lange Zeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top