1

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!

Marcin Orlowski
  • 72,056
  • 11
  • 123
  • 141
Jigar Patel
  • 21
  • 1
  • 4
  • Possible duplicate of https://stackoverflow.com/questions/62036724/how-to-parameterize-beforeeach-in-junit-5 – wolle Apr 01 '22 at 09:17

0 Answers0