15

Jenkins CI サーバーで単体テストと Selenium テストを実行しています。ご存知のように、大規模なプロジェクトではテストの実行に時間がかかります。

それぞれのソース コードが変更されたテストのみをトリガーできる Java 用のツール/フレームワークはありますか? これは、SCM へのすべてのコミットがソース コードのすべての領域に影響するわけではないためです...

コード カバレッジには Cobertura を使用し、レポートには Surefire を使用しています。

編集: Atlassian Clover を見つけましたが、無料のソリューションを探しています。

4

4 に答える 4

6

Jenkins CI サーバーで単体テストと Selenium テストを実行しています。ご存知のように、大規模なプロジェクトではテストの実行に時間がかかります。

これが私が取り組む問題です。プロジェクトを複数の論理ユニット (永続層、サービス層、Web 層など) に分割し、個別にテストします。そうすれば、Web レイヤーが変更され、アーティファクトごとのビルド時間が短くなった場合にのみ、Selenium テストを実行する必要があります。

于 2012-11-15T10:01:46.120 に答える
4

一般に、テストを実行しないと、どのコードがどのテストでカバーされているかを確実に推測することはできません。また、テストを実行した場合でも、実行パスは実行ごとに異なる可能性があります。このような完全な分析は停止問題と同等だと思います。

ただし、以前のテスト実行からのカバレッジまたはテスト ケース ファイルのインポートを使用して、どのテストが変更されたコードを実行する可能性が高いかを推測できます。

最終的には、テスト スイート全体を実行する必要がありますが、変更されたコードに対してテストを実行することがより重要であることは正しいです。最初に最新のリビジョンをテストし、問題を二分するためだけに以前のリビジョンに進むという意味です。

Google は*、ハッキングされたコード リポジトリがコミット時**に単体テストを実行し、最初に実行するテストを決定するためにテスト フレームワークを微調整したと主張したことで有名です。彼らの変更が公開されているかどうかはわかりません。

*会議プレゼンテーションへのビデオ トーク、正確な名前またはリンクを思い出せません

**厳密にコミット後、テストが失敗し始めた場合は自動ロールバック

于 2014-01-09T08:20:49.803 に答える
3

JUnit MaxまたはInfinitestを試すことができますが、どちらもIDEベースです。

于 2012-11-15T09:26:59.650 に答える
1

個人的には、あなたはこれを間違った方法で見ていると思います。機能と時間に基づいて、Junit テストを個別のパッケージに分割することをお勧めします。

このようなプロジェクトでは、コミットごとに健全性テストを実行しますが、これらのテストは非常に限定されており、最も基本的な機能をカバーし、さらに夜間のテストを実行してさらに多くの機能をカバーします (誰も夜に働いていないため、その日のコードをテストするための 12 時間枠)。

テスト スイート全体でそれが必要な場合 (必要だった場合は驚きです)、週末のテスト スイートを実行できます。

変更されたクラスのみをテストすることは、これらのクラスがプロジェクトの他の部分に影響を与えないことを前提としているため、包括的なテストを行わない限り、または影響を受ける領域をたまたま変更しない限り、検出されないエラーにつながる可能性があります。 .

これが技術的にあなたの質問に答えるものではないことは知っていますが、よく考えてみてください。

于 2012-11-15T10:05:18.800 に答える