Skip to content

JUnit 4

@Rule/@ClassRule integration

JUnit4 @Rule/@ClassRule: This mode starts the container before your tests and tears it down afterwards.

Add a @Rule or @ClassRule annotated field to your test class, e.g.:

public class SimpleMySQLTest {
    @Rule
    public MySQLContainer mysql = new MySQLContainer();

    // [...]
}

Manually controlling container lifecycle

As an alternative, you can manually start the container in a @BeforeClass/@Before annotated method in your tests. Tear down will be done automatically on JVM exit, but you can of course also use an @AfterClass/@After annotated method to manually call the stop() method on your container.

Example of starting a container in a @Before annotated method:

class SimpleMySQLTest {
    private MySQLContainer mysql = new MySQLContainer();

    @Before
    void before() {
        mysql.start();
    }

    @After
    void after() {
        mysql.stop();
    }

    // [...]
}

Singleton containers

Note that the singleton container pattern is also an option when using JUnit 4.