公式に書いてなくて探してすぐに見当たらなかったので備忘録
Nested Classの指定は .
ではなく $
でのアクセスになる
# build.gradle.kts plugins { id("org.gradle.test-retry") version "1.4.1" } tasks.withType<Test> { useJUnitPlatform() retry { maxRetries.set(3) filter { includeClasses.add("com.example.app.Test\$InnerClassA") } } }
もし配下のNested Classすべてを実行するなら includeClasses.add("com.example.app.Test\$*")
とかにする
# Test code package com.example.app import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.junit.jupiter.api.fail class Test { @Nested inner class InnerClassA { @Test fun `リトライされること`() { fail("retry") } } @Nested inner class InnerClassB { @Test fun `リトライされないこと`() { fail("not retry") } } }
実行結果
$ ./gradlew test > Task :test Test > InnerClassA > リトライされること() FAILED org.opentest4j.AssertionFailedError at Test.kt:12 Test > InnerClassB > リトライされないこと() FAILED org.opentest4j.AssertionFailedError at Test.kt:20 Test > InnerClassA > リトライされること() FAILED org.opentest4j.AssertionFailedError at Test.kt:12 Test > InnerClassA > リトライされること() FAILED org.opentest4j.AssertionFailedError at Test.kt:12 Test > InnerClassA > リトライされること() FAILED org.opentest4j.AssertionFailedError at Test.kt:12 5 tests completed, 5 failed > Task :test FAILED FAILURE: Build failed with an exception. BUILD FAILED in 6s 6 actionable tasks: 2 executed, 4 up-to-date