発生バージョン
- Spring boot 2.4.2
トレースログ
java.lang.IllegalStateException: the temporary folder has not yet been created
at org.junit.rules.TemporaryFolder.getRoot(TemporaryFolder.java:299)
...
原因のコード
@Rule
private TemporaryFolder tempFolder = new TemporaryFolder();
原因
@Rule, TemporaryFolderはJunit5で削除されていた。
JUnit3 -> 4みたいに破壊的な変更はないんだな~と思いながら書いてけど、そうでもなかったw
JUnit5での書き方
@TempDir
public Path tempFolder;
そもそも使わなくなった@RuleとTemporaryFolderがなんで@Deprecatedされてないんだと思い調べてみたところ、spring-boot-starter-testだけ依存してる場合は@Rule等が参照できずコンパイルエラーになりました。
少なくともspring-batch-testを依存関係に追加すると、使えもしないのにJunit4のモジュールが参照できてしまうようです。
使わないなら消しといたほうがよさそうです。
dependencies {
...
testImplementation 'org.springframework.boot:spring-boot-starter-test'
- testImplementation 'org.springframework.batch:spring-batch-test'
...
}