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.