build.gradleの定義
dependencies {
testCompile 'org.jmockit:jmockit:1.33'
testCompile 'junit:junit:4.12'
}
何も設定をせずにテストを実行すると
jmockitのライブラリを-javaagentに設定するか、システムプロパティにjdk.attach.allowAttachSelfを設定してください例外が発生します。Caused by: java.lang.IllegalStateException: Running on JDK 9 requires
-javaagent:/jmockit-1.n.jar or -Djdk.attach.allowAttachSelf
テスト実行時のシステムプロパティを追加する
Gradleのテストタスク実行時に、上の例外で指定されたシステムプロパティを設定します。test {
jvmArgs "-Djdk.attach.allowAttachSelf"
}
システムプロパティ追加後にテストを実行
このようにテストが正常に実行されます。➜ java9 ./gradlew clean test
BUILD SUCCESSFUL in 2s
3 actionable tasks: 3 executed
gradle実行時にワーニングログが出力される場合
Gradle実行時にこのようなワーニングが出力される場合があります。その場合は、Gradleのバージョンを4.1以上(現時点では4.1-rc-2が最新)にします。
➜ java9 ./gradlew clean test
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.gradle.internal.reflect.JavaMethod
WARNING: Please consider reporting this to the maintainers of org.gradle.internal.reflect.JavaMethod
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release