JMockit を使う時の注意点
JMockit を使用する場合、JUnit より先に読み込まれるようクラスパスを設定する必要があるっていうのは割りとあっちこっちで言われている内容。
Eclipse でテストしてた時は問題なかったが、Linux 環境でビルドしたときに問題が発生
JMockit を最初に読み込むようにしたら問題は解決したので、その内容をメモ
実施した環境は、ビルドツール Gradle 、バージョンは 2.4
最初参考にしたのはこちらのサイト
gradle + jmockitでjava.lang.IllegalStateExceptionって出たので対応 - 記憶永続化用のメモブログ
カスタムコンフィギュレーションを設定して、そのコンフィギュレーションで JMockit の依存関係を設定する
そして、test タスク時のクラスパスを変更するってもの
こうすることで、クラスパスを表示させた時 JMockit のモジュールが最初に来ていることが分かる
それと自分の場合
jvmArgs "-javaagent:[JMockit へのクラスパス]"
も test タスク内に追記した
ただ上記の設定だと、Eclipse の「Gradle 依存関係」に JMockit のモジュールが表示されない
独自で追加したコンフィギュレーションは、そのままだと Eclipse には認識されていないので、Eclipse で開発したい場合困る
Eclipse の問題か・・ってことで Gradle の DSL、Eclipse Plugin のページを探すと解決策発見
EclipseClasspath - Gradle DSL Version 2.2-20140924021627+0000
plusConfigurations += [ configurations.provided ]
の部分
意味はそのまんまで、コンフィギュレーションを追加するってプロパティ
プロパティの説明でも、「コンフィギュレーションのファイルが、クラスパスに追加される。デフォルトは testRuntime コンフィギュレーション」と言ってるので良さそう
The configurations whose files are to be added as classpath entries.
Default with eclipse and java plugins:
project.configurations.testRuntime
コンフィギュレーションの関係なんかはこっち参照
これを追記したら、Eclipse の「Gradle 依存関係」にモジュールが表示されるようになったので、めでたしめでたし