6

アプリケーションのjunitテストを実行するためにmaven Surefireプラグインを使用しています。

最初の失敗またはエラーの後に実行を停止したい。私の場合、これらはアプリケーションの状態を変更する統合テストであるため、失敗後の正確なシステム状態を知る必要があります (テストを単独で実行すると合格するが、スイート全体で実行すると合格しないという奇妙な問題が発生しています) )。

出来ますか?ここのプラグイン ドキュメントでオプションが見つかりませんでした。

4

2 に答える 2

7

実際、これは maven-surefire-plugin ではできないことがわかりました。

ここで答えを見つけました。

私は実際に@mhallerによって提案されたソリューションを使用することになります

そこで、次のような junit リスナーを実装しました。

package br.com.xpto;

import org.junit.runner.Description;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;

import br.com.caelum.brutal.integration.scene.AcceptanceTestBase;

public class FailFastListener extends RunListener {

    public void testFailure(Failure failure) throws Exception {
        System.err.println("FAILURE: " + failure);
        AcceptanceTestBase.close();
        System.exit(-1);
    }

    @Override
    public void testFinished(Description description) throws Exception {
        AcceptanceTestBase.close();
        System.exit(-1);
    }
}

そして、次のように maven-surefire を構成します。

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <executions>
        <execution>
            <id>surefire-integration</id>
            <phase>integration-test</phase>
            <goals>
                <goal>test</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>none</exclude>
                </excludes>
                <includes>
                    <include>**/scene/**/*Test.java</include>
                </includes>
                <forkMode>once</forkMode>
                <properties>
                    <property>
                        <name>listener</name>
                        <value>br.com.caelum.brutal.integration.util.FailFastListener</value>
                    </property>
                </properties>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <excludes>
            <exclude>**/*</exclude>
        </excludes>
    </configuration>
</plugin>
于 2013-04-05T17:45:10.943 に答える
1

まず統合テストでは、maven-surefire-plugin ではなく、maven-failsafe- pluginを使用する必要があります。

さらに、通常 CI 環境で行われる統合テストが失敗した場合。その後、失敗した統合テストを次の方法で実行できます

mvn -Dit.test=NameOfTheFailedIntegrationTest verify

別々に。

于 2013-04-05T17:18:59.643 に答える