1

1つのプロファイルに2つの確実な実行があります-それらは異なる構成を必要とします。-Dtest = ...を実行すると、一致するテストが2回実行されます(実行ごとに1回)。

テストを1回だけ実行するにはどうすればよいですか?それ以上に、どうすれば確実にフォローを含めるか除外することができますか?(1回の実行で0回のテストが実行されます。-DfailIfNoTest= falseを使用します。)

    <profile>
        <id>clustering.integration.tests.profile</id>
        <activation>
            <property>
                <name>clustering.integration.tests</name>
                <value>true</value>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <executions combine.children="append">

                        <!-- Disable default-test execution. -->
                        <execution>
                            <id>default-test</id>
                            <goals><goal>test</goal></goals>
                            <phase>none</phase>
                        </execution>

                        <!-- Single node clustering tests. -->
                        <execution>
                            <id>tests-clustering-single-node.surefire</id>
                            <phase>test</phase>
                            <goals><goal>test</goal></goals>
                            <configuration>
                                <includes>
                                    <include>org/jboss/as/test/clustering/single/**/*TestCase.java</include>
                                </includes>
                            </configuration>
                        </execution>

                        <!-- Multi node clustering tests. -->
                        <execution>
                            <id>tests-clustering-multi-node.surefire</id>
                            <phase>test</phase>
                            <goals><goal>test</goal></goals>
                            <configuration>
                                <includes>
                                    <include>org/jboss/as/test/clustering/cluster/**/*TestCase.java</include>
                                </includes>
                            </configuration>
                        </execution>

                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
4

2 に答える 2

2

これは、maven-surefire-pluginの誤用のように聞こえます。これは、代わりにmaven -failsafe-pluginによって実行される必要があるある種の統合テストがあるように思われるためです。それらを使用することにより、ユニットテストと統合テストの構成が自動的に異なります。maven-surefire-pluginは単体テストを実行することを目的としていますが、maven-failsafe-pluginは統合テストを実行することを目的としています。さらに、構成にはさまざまな種類の統合テストが必要であるように見えます。つまり、複数の統合テストモジュールが必要です。

 +-- pom.xml
 +-- module-1
 +-- module-2
 +-- integration-test-single-node
 +-- integration-test-multi-node
 ...

そして、これは、統合テストの実行にさまざまな構成を設定するのに最適です。

于 2012-03-14T17:49:43.810 に答える
1

maven-surefire-pluginのバージョン2.12には、この問題の修正が含まれています。(http://jira.codehaus.org/browse/SUREFIRE-806を参照)

v2.12に追加された変更の説明:上記のJIRAリンクに関するJohn Caseyのコメントから引用:

また、複数のテスト実行ブロックがある場合、間違ったブロックで指定されたテストを実行しないようにするために、既存の包含/除外が尊重されるようになりました...指定されたテストは、これらの包含/除外の調整フィルターとして機能するようになりました。これは、複数のテスト実行ブロックがある場合、-Dtest=...を使用するだけでは通常は実行されないテストを実行できないことを意味します。

テスト実行ブロックが1つしかない場合は、指定されたテストが以前と同様にインクルードをオーバーライドする必要があります。

于 2012-03-13T17:23:53.787 に答える