しおしお

IntelliJ IDEAのことなんかを書いてます

JUnit5でTempDirを使って一時ディレクトリを扱う

JUnit4のTemporaryFolder的なやつですね。5.4から追加されて、アノテーションEXPERIMENTAL とあるのでまだ実験的な機能のようです。

サンプル

テストメソッド単位に一時ディレクトリを使う

  • テストメソッドの引数として java.nio.file.Path を受け取り、 org.junit.jupiter.api.io.TempDir アノテーションを設定します
  • java.nio.file.Path は一時ディレクトリを示すパスになっています
@Test
internal fun sample1(@TempDir tempDir: Path) {
    val file = tempDir.resolve("test.txt").toFile()
    file.writeText("test")
    
    assertThat(file.readText())
            .isEqualTo("test")
}

テストクラス内のすべてのテストメソッドで一時ディレクトリを使う

class TempDirSample {
    
    @TempDir
    lateinit var tempDir: Path

    @Test
    internal fun sample1() {
        println("tempDir = ${tempDir}")
    }

    @Test
    internal fun sample2() {
        println("tempDir = ${tempDir}")
    }
}