I need to execute some piece of code before every JUnit test method. To execute this piece of code I use SpringTest class AbstractTestExecutionListener and its child TransactionContextTestExecutionListener.
This is code:
public class TransactionContextTestExecutionListener extends AbstractTestExecutionListener{
private static final Logger logger = Logger.getLogger(TransactionContextTestExecutionListener.class);
@Override
public void beforeTestMethod(TestContext testContext) throws Exception {
Object ctx = testContext.getApplicationContext().getBean(Context.class);
}
My JUnit class looks like:
@ContextConfiguration(locations = "classpath:/META-INF/spring-test/tests-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(TransactionContextTestExecutionListener.class)
@Transactional
public class SelectQueryBuilderTest {}
Problem is that beforeTestMethod method is only called before first executed test method. It is not called before all of the rest ones.
Is problem in configuration? Any idea?
Thanks
As you are running your JUnit class with the SpringJUnit4ClassRunner
, you can use the JUnit 4 annotations:
@Before
public void multipleInit() {
// Called before each method annotated with @Test
...
}
@BeforeClass
public static void initAll() {
// Called once per class, before any method annotated with @Test is called
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With