概要
IntteliJ IDEAで、Mavenプロジェクトのtestフェーズをデバッグ実行した場合に、ブレークポイントで止まってくれない(ステップ実行ができない)現象に遭遇した。
Mavenはデフォルトだとテストが別の(forkした)プロセスで実行されるため、IDEAがテストの実行プロセスを捕まえられないようだ。
実行時に -DforkCount=0
オプションをつけるとデバッグできるようになる。
$ mvn -DforkCount=0 test
補足
Maven Surefire Plugin の maven.surefire.debug
プロパティを使えば、リモートデバッグの要領でforkしたプロセスでもデバッグはできるよう。
ただテストをデバッグしたいのって、IDEで開発中のことがほとんどだろうし、いっそforkさせないようにした方が楽と思われる。
forkMode=never
というパラメータもあるが、これは互換性のために残された古いものなので、forkCountを利用したほうがよい。