複数のモジュールから一緒にIntelliJIDEAで単体テストを実行する


85

2つ以上のIDEAモジュールからすべてのテストを一度に実行するにはどうすればよいですか?

私は多くのモジュールを使用しており、すべての単体テストを頻繁に実行することが重要です。実行するフォルダーを複数選択すると、コンテキストメニューに[実行]オプションがなくなります。

回答:


113

最善の方法:(3年後に編集)

これを達成するためのさらに良い方法があります。

  1. メニュー「実行」→「構成の編集...」を選択します。左上隅にある緑色のプラスをクリックして、JUnitを選択します。

  2. 「テストの種類」から「パターン」を選択し、この正規表現を表示どおりに入力^(?!.*IT$).*$します(キャレット^で始まり、ドルで終わります$)。この正規表現によると、名前にITが含まれていないすべてのテスト

  3. 「テストの検索」から「プロジェクト全体」を選択します。作業ディレクトリは、最上位モジュールの作業ディレクトリに設定する必要があります(デフォルトで設定する必要があります)。

  4. 「すべての単体テスト」のように、テストの名前を入力します。また、この構成が後で消えないように、「共有」オプションをマークすることを好みます。[適用]と[OK]をクリックします。

この正規表現を試して、ニーズに合わせることができます。

元の答え:

快適ではありませんが、実行可能です。

  1. 最初のモジュールを選択し、test/javaディレクトリを右クリックして「すべてのテストを実行」します。テスト構成を作成します。
  2. 「構成の編集」を選択し、新しく作成された構成で「共有」をチェックして保存します。
  3. 2番目のモジュールである[すべてのテストを実行]を選択し、この構成でも[共有]をオンにします。
  4. 「起動前」セクションで、「+」をクリックし、「別の構成を実行」を選択してから、最初のモジュールの構成を選択します。

このようにして、構成を順番に実行し、すべての構成に新しいタブを取得します。それでも、何もないよりはましです。


ありがとう!はるかにクリーンな方法。3年後にこれを達成するためのより良い方法があるか
どうか疑問に思います

ありがとう!あなたは私の時間を保存し、これはまだはるかに私は複数のカバレッジレポートの生成と統一されたケースランナーの問題の両方を解決するのを見つけることができる最も賢い方法ですワンショットで
フェイ

私はよりよい解決策の@CoderSpinozaと私のANSERを編集した
トマシュKalkosińskiを

10
テストケースが実行時にモジュール固有のリソースを使用する場合、更新されたバージョンはあまり良くありません-私はまだ元のソリューションを好みます。
fei

Gradleの依存関係を尊重するようにこの構成を取得するにはどうすればよいですか?現在、Guavaからクラスが欠落していると失敗します。単一モジュールのテストを実行する場合、正常に機能します。
Jorn 2016年

22

「実行構成」を作成する必要があります。

  1. [作成]ボタンの右側にある上部のドロップダウンに移動し、クリックします
  2. 「構成の編集」を選択します
  3. 次に、「+」ボタンをクリックして新しい実行構成を追加し、JUnitを選択します
  4. 次に、[構成の実行]を構成するときに、[テストの種類]ドロップダウンが表示されたら、[ディレクトリ内のすべてのクラス]を選択します。
  5. ルートとして使用するディレクトリを選択します。プロジェクトの最上位ディレクトリまたはモジュールの任意のディレクトリを選択できます。
  6. クラスパスを取得する場所からIntelliJモジュールを選択します(クラスパスがある場合は、最上位のプロジェクトになる可能性があります)

それは問題を解決しませんが、ヒントをありがとう。完璧な方法は、1つだけでなく複数のdirを選択することです。pertialソリューションは、かもしれパターンのみのパッケージではなく、dirsに...まだパターンを使用することですが、
WojtekさんErbetowski

15
[テストの種類]で[すべてパッケージ内]を選択し、[プロジェクト全体]チェックボックスを選択します。これにより、すべてのモジュールでテストが実行されます。
マーティンオデリウス2013年

5
各モジュールを作業ディレクトリとして独自のモジュールディレクトリで実行したいのですが、それは不可能のようで、全体に単一のモジュールディレクトリを使用しているようです。
bacar 2014

これまでにクリーンなソリューションです@MartinOdhelius
Hemil

10

すべてのモジュールを選択して右クリックし、すべてのテストを実行することを選択します。これにより、「プロジェクト全体」と呼ばれる構成が作成され、いつでも再実行できます。

これはモジュールごとに個別に単体テストを実行するため、受け入れられた答えよりも優れていることがわかりました。テストケースが実行時にモジュール固有のリソースを使用する場合、受け入れられた回答の最善の方法は機能しません。

すべてのモジュールを選択

すべてのモジュールを選択

右クリックして、すべてのテストの実行を選択します

右クリックして、すべてのテストの実行を選択します

新しい実行構成を取得する

新しい実行構成を取得する


最初のステップで複数のモジュールを選択するだけで十分です。
user76 1018年

2
私の意見では、これは受け入れられた答えでなければなりません。私が持っている唯一の予約は、「最も簡単」という用語の使用です。残念ながら、Intellijでの実行構成について簡単なことは何もありません。構成を使用して単純なタスクを実行する方法はたくさんありますが、通常は1つだけです。したがって、多くの場合、あなたの仕事は、機能するものを探すためにすべての異なるオプションを繰り返すことです。簡単ではありません。
DavidSackstein19年

これにより、モジュールのごく一部を選択している場合でも、プロジェクト(プロジェクト全体)のすべてのテストが実行されます。これは私が望むものではありません。私の場合、テストを実行するすべてのモジュールが共通のパッケージを共有するため、結果の「プロジェクト全体」構成を編集して、モジュールのサブセットに対してのみテストを実行するようにフィルター処理するパッケージを追加できます。
アルバートビラカルボ

5

私にとって、両方のソリューションが機能しなかったか、期待どおりに機能しませんでした。

私には3つのモジュールがあります。私のモジュールの依存関係は次のようになります

プレゼンテーション->ドメイン->データ

すべてのテストを一緒に実行したかっただけです。だから私は「モジュールの依存関係全体」アプローチを思いついた

私の設定は次のようになります。

ここに画像の説明を入力してください


2

これは、複数のモジュールを使用するプロジェクトでうまくいきました。

新しいJUnit実行/デバッグ構成を作成します。テストの種類: 'すべてパッケージ内'テストの検索: 'プロジェクト全体'

作業ディレクトリも指定する必要があります。


それが私もやったことです。
miva 26

1

もう1つのそれほど明白ではないケースは、複数のプロジェクトでコードカバレッジが必要な場合です。素朴な解決策は、複数のプロジェクトを選択し、それらのプロジェクトですべての単体テストを一度に実行することです。結局のところ、クラスパスが変更され、IntelliJが実行構成ごとに1つのクラスパスエントリを持っている場合、単体テストは失敗する可能性があります。この場合、プロジェクトで単体テストを順番に実行するだけで実際には十分です。これは、各実行の最後に、IntelliJ(2017.2.5 Community Edition)が、収集されたカバレッジを以前に収集されたカバレッジ統計に置き換えるか、追加するかを尋ねるからです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.