4

最初のエラーが発生したときに、Maven が JUnit Spring テストを実行しようとするのをやめてもらいたいです。これは可能ですか?

テスト クラスは次のようになり、標準の Maven ターゲットとして実行します。

@ContextConfiguration(locations = {"classpath:/spring-config/store-persistence.xml","classpath:/spring-config/store-security.xml","classpath:/spring-config/store-service.xml", "classpath:/spring-config/store-servlet.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class SkuLicenceServiceIntegrationTest
{
...

Spring 構成にエラーがある場合、各テストは Spring コンテキストを再起動しようとしますが、これには 20 秒かかります。これは、ビルドが失敗したと結論付ける前に、すべてのテストを実行しようとするため、テストが失敗したことを長い間見つけられないことを意味します!

4

1 に答える 1

1

これは答えというよりは発言ですが、それでも役立つかもしれません。

統合テストを別のフェーズに分けて、SurefireではなくFailsafeで実行することをお勧めします。このようにして、高速の単体テストのみを実行する必要があるのか​​、長時間実行される統合テストを含む完全なセットを実行する必要があるのか​​を判断できます。

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>integration-test</id>
                    <goals>
                        <goal>integration-test</goal>
                    </goals>
                </execution>
                <!-- Uncomment/comment this in order to fail the build if any integration test fail -->
                <execution>
                    <id>verify</id>
                    <goals><goal>verify</goal></goals>  
                </execution>
            </executions>
        </plugin>
    </plugins>

問題の回避策は、テストを個別の実行に選び出し、最初に実行することです。このようにすると、実行は失敗し、後続の確実な/フェイルセーフな実行は開始されません。それを行うようにプラグインを構成する方法を参照してください。

于 2011-10-17T10:51:24.313 に答える