技術メモブログ

技術ネタの備忘録的なブログ。技術ネタ以外にも気になったことをつらつら書きます

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 の DSLEclipse 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 依存関係」にモジュールが表示されるようになったので、めでたしめでたし