IntelliJで、Mavenテストの目標をデバッグするにはどうすればよいですか?


83

intellijおよびmavenpomファイルを使用して、mavenテスト目標内で実行されるデバッグテストを実行するにはどうすればよいですか?

コードで直接実行すると、intellijのMavenプロジェクト内でチェックしたプロファイルが欠落しているという不満があります。

回答:


25

あなたの目標を右クリックして「[あなたの目標]をデバッグする」(あなたの場合はテスト目標)はどうですか?

デバッグ目標


ああ、それについては考えていませんでした。金曜日の午後には遅すぎます:Dありがとう。
JavaRocky 2010

27
ブレークポイントを使用したい場合、この答えは不十分です。代わりにホバーの答えを参照してください。
David Groomes

186

http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

IDEAで、デバッグモードでテストを実行します " mvn -DforkMode=never test"

更新:実行/デバッグ構成を開き、[ランナー]タブで追加します-DforkMode=never

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

(@ mikeapr4による注記:surefireプラグインの新しいバージョン(2.14+)は使用しますmvn -DforkCount=0 test


それは私のために働いた。次のコマンドを使用して、アイデア10のテスト目標をデバッグしています
。– Swapnonil Mukherjee 2011

1
私のマルチモジュールプロジェクトでは、これがIntellij内から私のために働いた唯一のオプションでした。
nash 2012年

24
Mavenプロジェクトで見つけたIDEA11では、テストしたいモジュールのテストを右クリックする必要がありました。これにより、実行/デバッグ構成が作成されました。次に、この新しい構成を編集し、[ランナー]タブをクリックして、VMオプションに-DforkMode = neverを追加します。[OK]をクリックします。ブレークポイントを設定し、デバッグアイコンをクリックして、新しいデバッグ構成を実行します。上記の組み合わせなので、ヒントをありがとう。
foolshat 2012

@MarkMブレークポイントは、このアプローチを使用する私にとってIJ13では尊重されません。
StephenBoesch 2014年

10
surefireプラグインの新しいバージョン(2.14+)が使用していることは注目に値しますmvn -DforkCount=0 test。これは、他の(紛らわしい)回答で以下に説明されていますが、見逃される可能性があります。
mikeapr4 2015

28

次のオプションを使用してテストを実行します。

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test

...次に、リモートデバッガーを使用してMavenに接続します。


log4j / loggingを機能させることができましたか?-Dlog4j.configuration = <log4j.propertiesへのパス>も含めましたが、ロギングステートメントが出力されません。
StephenBoesch 2014年

19

-DforkMode=never は動作しなくなり、SureFireでは非推奨になりました。

-DforkCount=0surefireプラグイン2.14以降を使用する場合は、代わりに使用してください。


1
SurefireのドキュメントではforkCountreuseForks代わりに使用するように言われているので、上記は「-DforkCount=0代わりに使用する」という意味だったと思います。試しましたが-DforkCount=0reuseForksフォークがなくてもかまいません)、ブレークポイントが作動しませんでした。-DforkMode=never(Maven 3.2.1、IDEA 13.1.2)でトリップします。
mmindenhall 2014年

10

質問に答えました。しかし、私自身の経験を共有するためだけに。選択した答えは私の問題を解決しませんでした。私のコードには複数のモジュールがあります。

foolshatの返信は、私の問題に貴重な洞察をもたらしました。

2つの解決策があります。1。VMオプションを 追加してIDEAを使用する-DforkMode=never。デバッグモードで実行する必要があります。2.リモートデバッグを設定しますソケットを指定ます。この場合、forkModeは必要ありません。

これは私が経験したことの要約にすぎません。


1

Colin Hebertの解決策は、私にも機能していません。しかし幸いなことに、テスト方法の横に表示される緑色の三角形を右クリックすることで、テストをデバッグする簡単な方法を見つけました。

Javaテストクラスの例

それがお役に立てば幸いです。


1
そのクラスのコードを投稿し、画像を使用しないでください。
常識

1
このコメントで私が貢献しているのは、IntelliJでウィンドウを開いてデバッグする方法です。クラスのコードは重要ではありません。
デヴィッド・DRM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.