2009-06-24 11 views
5

単体テストをビルドするJavaクラスの単体テストを実行する方法はありますか?たとえば、MyClass.javaが古い場合、antはMyClass.classを構築します。その後、MyClassTestとMyClassTestSuiteが存在する場合は、MyClassTestとMyClassTestSuiteも実行するようにします。命名規則に基づいている必要はありません。注釈や他の方法を使っても問題ありません。変更されたソースファイルの単体テストを実行するにはどうすればよいですか?

編集:これは悪い考えであると言って何人かの人々が罵倒しています。それはとなります。ユニットテストをすべて実行せずにチェックインを予定している場合は、私の主なプロジェクトは、実行するのに約20分かかる16kユニットテスト以上です。チェックインの前にそれらをすべて実行しますが、ファイルを変更するたびにスイート全体を実行するのは完全に実用的ではありません。申し訳ありませんが、私はもっと文脈を与えておくべきでした。

答えて

4

それは簡単ではありません...

Atlassian Cloverを見てみましょう。それはあなたが夢見ている機能を持っていますが、それは無料ではありません。

6

私はこのアプローチをお勧めしません。副作用によって導入されたエラーがなくなる可能性があります。

Infinitest Website

概要についてはこちらをスクリーンキャストを参照してください:

3

Infinitestを見てください、それはあなただけで変更したソースファイルに基づいてテストを実行Eclipseの(とのIntelliJ)用のプラグインです

Screencast Overview

+0

Infinitestは素晴らしいです。私はそれなしでコード化しないだろう。 これはNetBeansに切り替えることのない理由の1つです –

+0

スクリーンキャストリンクが壊れています - 私はここで見つけました:http://improvingworks.com/products/infinitest/ –

4

これは私にとっては悪い考えです。もちろん、変更されたソースファイルにはテストが必要ですが、それらのファイルに依存するファイルやそれらに依存するファイルなどもあります。どのファイルが他のファイルに依存しているかを追跡する必要があります。

私の意見では、プロジェクトのサイズが大きくてテストの依存関係ツリーを解決しようとするとかなりの利益があるのであれば、おそらくプロジェクトが大きすぎますか?多分、それを別々のプロジェクトに分割して一緒に作業してください。それぞれ別々にテストすることができます。

0

これは避けたいと言っている他の人々とチャイムしたいと思います。変更された特定のクラスのテストケースのみを実行すると、変更されていないクラスのテストが中断され、変更されたコードの一部に依存するテストが中断されるリスクが発生します。

これは、インターフェイスへのプログラミングや単体テストの依存関係の攻撃について積極的であっても、危険です。たとえば、静的ユーティリティクラスには、それらを直接使用するクラスが多数存在する可能性があります。ここでは、静的ユーティリティメソッドに変更を加え、そのメソッドのテストが確実に機能することを確認し、メソッドのすべてを実行していない場合にメソッドを呼び出すコードを大量に作成するケースを想像するのは簡単でしょう。テスト。

3

ANTでこれを行う方法はわかりませんが、Eclipseでこれを行うことができます。

Kent Beckは、コードを保存した後にユニットテストを実行するJUnit MaxというEclipseプラグインを作成しました。最初に "失敗する可能性が高い"テストを実行します。

JUnit Max

+0

MaxCoreは古いテストに新しいテストを好む テストが遅くなるテスト、そして最後に最後に が失敗したテストへのテストに失敗しました。 – Jon

0

あなたが命名規則に従っている場合さて、あなたはおそらく、変数を使用してそれを行うことができます。変更されたファイルのリストを取得し、対応するテストを実行します。しかし、他の答えが説明するように、私はそれに反対することをお勧めします。

関連する問題