27

私の質問はこれと非常によく似ています: maven-failsafe-plugin Failures and BUILD SUCCESS?

そして、テストが失敗した場合に失敗するようにフェイルセーフプラグインを設定することができました。

ただし、テストがエラー状態になった場合でも、フェイルセーフ プラグインはビルドを中断しません。

.................
-------------------------------------------------------
   T E S T S
-------------------------------------------------------
Running xxxxx.IntegrationTierFunctionalTestCase
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.054 sec <<< FAILURE!

Results :

Tests in error:
  testException(xxxxx.IntegrationTierFunctionalTestCas

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is
[INFO] [failsafe:verify {execution: functional-test-1024}]
[INFO] Failsafe report directory: C:\projects\oec-integration-server\trunk\oec-integrati
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is
[INFO] [failsafe:integration-test {execution: functional-test-24}]
[INFO] Failsafe report directory: C:\projects\oec-integration-server\trunk\oec-integrati
.............
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 58 seconds
[INFO] Finished at: Tue May 28 17:48:13 BST 2013
[INFO] Final Memory: 114M/781M
[INFO] ------------------------------------------------------------------------

簡単にするために、 IntegrationTierFunctionalTestCase にはこのコードのみが含まれています

import org.junit.Test;
import static org.junit.Assert.fail;
public class IntegrationTierFunctionalTestCase 
{

    @Test
    public void testException(){
        //fail();
        throw new RuntimeException("super error");
    }
}

fail() のコメントを外すと、ビルド全体が正しく失敗し、ビルドが失敗します。しかし、例外をスローすると、上記のように失敗します。

プラグインの構成は次のようになります

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.7</version>
    <configuration>
        <redirectTestOutputToFile>true</redirectTestOutputToFile>
        <systemPropertyVariables>
            <oec.env>TEST</oec.env>
            <mule.test.timeoutSecs>2400</mule.test.timeoutSecs>
        </systemPropertyVariables>
        <additionalClasspathElements>
            <additionalClasspathElement>${basedir}/src/main/resources/config</additionalClasspathElement>
            </additionalClasspathElement>
        </additionalClasspathElements>
    </configuration>
    <executions>
        <execution>
            <id>functional-test-1024</id>
            <phase>test</phase>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
            <configuration>
                <includes>
                    <include>**/IntegrationTierFunctionalTestCase.java</include>
                </includes>
                <forkMode>once</forkMode>
                <argLine>-XX:MaxPermSize=256M -Xmx1024M</argLine>
            </configuration>
        </execution>
    </executions>
</plugin>

私は何が欠けていますか?いいえ、try-catch ブロックでラップして手動でテストを失敗させたくありません。

4

4 に答える 4

17

次のような統合テストを実行している場合:

mvn test-compile failsafe:integration-test

次に、フェイルセーフに関するMavenのドキュメントに従って、次のことを知っておく必要があります。

Failsafe プラグインは、統合テスト フェーズ中にビルドを失敗させないため、統合テスト後のフェーズを実行できます。

次のようにビルドを失敗させることができました。

mvn test-compile failsafe:integration-test failsafe:verify

参考までに、私のフェイルセーフ構成は次のとおりです。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19</version>
            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
于 2015-10-22T19:48:41.470 に答える
1

どの maven pom.xml ファイルでも、maven プロパティ "maven.test.failure.ignore" が "true" に設定されていないことを確認してください。これが、テストの失敗後にビルドを停止しない唯一の理由である可能性があります。

于 2013-05-29T08:38:11.950 に答える