Yes, you can use the reuse feature (in alpha state) of Testcontainers to not shutdown the container after the test.
For this to work you need Testcontainers >= 1.12.3 and opt-in with a properties file ~/.testcontainers.properties
testcontainers.reuse.enable=true
Next, declare your container to be reused:
static PostgreSQLContainer postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
.withDatabaseName("test")
.withUsername("duke")
.withPassword("s3cret")
.withReuse(true);
and make sure to not use a JUnit 4 or JUnit 5 annotation to manage the lifecycle of your container. Rather use the singleton containers or start them inside @BeforeEach
for yourself:
static final PostgreSQLContainer postgreSQLContainer;
static {
postgreSQLContainer = (PostgreSQLContainer) new PostgreSQLContainer()
.withDatabaseName("test")
.withUsername("duke")
.withPassword("s3cret")
.withReuse(true);
postgreSQLContainer.start();
}
This feature is rather intended to speed up subsequent tests as the containers will be still up- and running but I guess this also fits your use case.
You can find a detailed guide here.