diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java index e0d82d25d..6b0c062b0 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java @@ -23,7 +23,6 @@ import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.repeat.RepeatStatus; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.MongoDatabaseFactory; @@ -31,14 +30,24 @@ import org.springframework.data.mongodb.MongoTransactionManager; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory; import org.springframework.data.mongodb.core.convert.MappingMongoConverter; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.utility.DockerImageName; /** * @author Mahmoud Ben Hassine + * @author Yanming Zhou */ @Configuration @EnableBatchProcessing class MongoDBIntegrationTestConfiguration { + private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1"); + + @Bean(initMethod = "start") + public MongoDBContainer mongoDBContainer() { + return new MongoDBContainer(MONGODB_IMAGE); + } + @Bean public JobRepository jobRepository(MongoTemplate mongoTemplate, MongoTransactionManager transactionManager) throws Exception { @@ -60,8 +69,8 @@ class MongoDBIntegrationTestConfiguration { } @Bean - public MongoDatabaseFactory mongoDatabaseFactory(@Value("${mongo.connectionString}") String connectionString) { - return new SimpleMongoClientDatabaseFactory(connectionString + "/test"); + public MongoDatabaseFactory mongoDatabaseFactory(MongoDBContainer mongoDBContainer) { + return new SimpleMongoClientDatabaseFactory(mongoDBContainer.getConnectionString() + "/test"); } @Bean diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobExplorerIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobExplorerIntegrationTests.java index d94903504..d8964f8ef 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobExplorerIntegrationTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobExplorerIntegrationTests.java @@ -31,13 +31,8 @@ import org.springframework.batch.core.launch.JobLauncher; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -45,22 +40,13 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; /** * @author Henning Pöttker + * @author Yanming Zhou */ @DirtiesContext @Testcontainers(disabledWithoutDocker = true) @SpringJUnitConfig(MongoDBIntegrationTestConfiguration.class) public class MongoDBJobExplorerIntegrationTests { - private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1"); - - @Container - public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE); - - @DynamicPropertySource - static void setMongoDbConnectionString(DynamicPropertyRegistry registry) { - registry.add("mongo.connectionString", mongodb::getConnectionString); - } - @BeforeAll static void setUp(@Autowired MongoTemplate mongoTemplate) { mongoTemplate.createCollection("BATCH_JOB_INSTANCE"); diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobRepositoryIntegrationTests.java index b70b80281..632983d34 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobRepositoryIntegrationTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobRepositoryIntegrationTests.java @@ -26,13 +26,8 @@ import org.junit.jupiter.api.Test; import org.springframework.test.annotation.DirtiesContext; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.index.Index; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.Job; @@ -45,22 +40,13 @@ import org.springframework.data.mongodb.core.MongoTemplate; /** * @author Mahmoud Ben Hassine + * @author Yanming Zhou */ @DirtiesContext @Testcontainers(disabledWithoutDocker = true) @SpringJUnitConfig(MongoDBIntegrationTestConfiguration.class) public class MongoDBJobRepositoryIntegrationTests { - private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1"); - - @Container - public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE); - - @DynamicPropertySource - static void setMongoDbConnectionString(DynamicPropertyRegistry registry) { - registry.add("mongo.connectionString", mongodb::getConnectionString); - } - @Autowired private MongoTemplate mongoTemplate; diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoExecutionContextDaoIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoExecutionContextDaoIntegrationTests.java index e124f7746..18295c58f 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoExecutionContextDaoIntegrationTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoExecutionContextDaoIntegrationTests.java @@ -37,13 +37,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -51,22 +46,13 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; /** * @author Henning Pöttker + * @author Yanming Zhou */ @DirtiesContext @Testcontainers(disabledWithoutDocker = true) @SpringJUnitConfig({ MongoDBIntegrationTestConfiguration.class, ExecutionContextDaoConfiguration.class }) public class MongoExecutionContextDaoIntegrationTests { - private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1"); - - @Container - public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE); - - @DynamicPropertySource - static void setMongoDbConnectionString(DynamicPropertyRegistry registry) { - registry.add("mongo.connectionString", mongodb::getConnectionString); - } - @BeforeAll static void setUp(@Autowired MongoTemplate mongoTemplate) { mongoTemplate.createCollection("BATCH_JOB_INSTANCE");