I am trying to run some code before each test in my parameterized test using that parameter value. Here is a sample code which is similar to my actual test implementation. I am also adding desired output
Sample Code:
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.MethodSource
class SampleTest {
companion object {
@JvmStatic
fun getParameter(): List<String> {
return listOf(
"Parameter 1",
"Parameter 2",
"Parameter 3",
"Parameter 4",
)
}
}
@BeforeEach
@MethodSource("getParameter") // As per my search, I think this is not possible. Just adding this to demonstrate what I am trying to achieve in @BeforeEach hook
fun beforeEveryParameterizedHooksTest(parameter: String) {
System.out.println("Running before hooks for: $parameter")
}
@DisplayName("Parameterized hooks test")
@MethodSource("getParameter")
@ParameterizedTest
fun testParameterizedHooks(parameter: String) {
System.out.println("Test running for: $parameter")
}
}
Desired Output:
Running before hooks for: Parameter 1
Test running for: Parameter 1
Running before hooks for: Parameter 2
Test running for: Parameter 2
Running before hooks for: Parameter 3
Test running for: Parameter 3
Running before hooks for: Parameter 4
Test running for: Parameter 4
Please help me to figure out a possible way to achieve this. Thanks!