3

ビルドごとに単体テストを実行するのが賢明ですが、統合テストフェーズを完全にスキップします-CIサーバーに任せますか?

現在、私はJavaEEプロジェクトに取り組んでいますが、ほとんどの場合、一部の統合テストでしかカバーされていません。これらのテストは、記述が不十分で、時間がかかります。変更を加えるたびに、ビルドを数分待たなければなりません(90%の時間はそれらの統合テストです)。

私のアイデアは、JenkinsなどのCIサーバーを構成して、リポジトリーに対して行われたコミットを取得し(または、Mavenビルドの後でさらに適切に)、統合テストを使用してMavenビルドを実行することです。しかし、私が入力したときにmvn installコンパイル(単体テストの実行)プロジェクトをビルドするが、統合フェーズを完全に省略して(開発をスピードアップするために) Mavenを構成することは可能ですか?次に、CIはビルドを取得して再度実行を開始しますが、今回は統合テストを実施しますか?

このようにして、一部のコードを変更してからデプロイするまでの時間が大幅に短縮され、イライラが少なくなり、CIサーバーがビルドを完了した後、統合関連のバグが数分でキャッシュされます。

これは良い考えですか?誰かがそのような振る舞いを得るためにMavenを設定する方法を提案できますか?

4

2 に答える 2

4

プロファイルを使用してこれを実行できるはずです。統合テストの構成についてもっと情報が必要かもしれませんが。私は、maven-failsafe-pluginとプロファイルの組み合わせを使用して、プロジェクトでこれを数年間行ってきました。これがpomからのスニペットの例です:

<profiles>
    <profile>
        <id>integration-tests</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>integration-test</id>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                            <configuration>
                                ...
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

通常のローカル開発中mvn installは、maven-failsafe-pluginを介して実行される統合テストを実行しないでください。次に、を実行するようにCIサーバーを構成できますmvn clean install -Pintegration-tests

于 2013-02-16T09:10:48.603 に答える
1

まず第一に、それは素晴らしいアイデアだと思います。それはあなたの開発サイクルをはるかに速くします。

mvn installを実行するときに、統合テストフェーズを完全に省略する方法がわかりません。開発中に代わりに「mvncleanpackage」を実行できますか?これがオプションでない場合、統合テストにどのプラグインを使用しますか?ほとんどのプラグインには、プラグインの実行をスキップするために使用できる属性「skip」があります。プロファイルを使用して、さまざまなシナリオで「スキップ」のオンとオフを切り替えることができます。

于 2013-02-16T07:57:10.900 に答える