Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JUnit - before method

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

like image 980
vlcik Avatar asked Nov 29 '22 14:11

vlcik


1 Answers

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
    ...
}
like image 200
Romain Linsolas Avatar answered Dec 22 '22 19:12

Romain Linsolas