Динамические тесты в JUnit и Before/AfterEach
Вляпался недавно с динамическими тестами в ограничение JUnit: динамические тесты — неполноценные участники жизненного цикла, и, как следствие, для них не вызываются методы @BeforeEach
и @AfterEach
. Точнее запускаются, но перед фабрикой динамических тестов:
@BeforeEach
fun init() {
println("init stage")
}
@AfterEach
fun cleanup() {
println("clean up stage")
}
@TestFactory
fun dynamicTests() = listOf("dynamic1", "dynamic2").map { name ->
dynamicTest("dynamic $name") {
println("dynamic $name test")
assert(true)
}
}
Выведет:
init stage
dynamic dynamic1 test
dynamic dynamic2 test
clean up stage
Приходится в таких случаях использовать параметризованные тесты, хоть они и выглядят менее пристойно.