Skip to content

Commit dcf9598

Browse files
quafffmbenhassine
authored andcommitted
Polish MongoDB integration tests
Move MongoDB container setup from tests to centralized configuration Signed-off-by: Yanming Zhou <[email protected]>
1 parent a3e59b5 commit dcf9598

File tree

4 files changed

+15
-48
lines changed

4 files changed

+15
-48
lines changed

spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBIntegrationTestConfiguration.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,31 @@
2323
import org.springframework.batch.core.repository.JobRepository;
2424
import org.springframework.batch.core.step.builder.StepBuilder;
2525
import org.springframework.batch.repeat.RepeatStatus;
26-
import org.springframework.beans.factory.annotation.Value;
2726
import org.springframework.context.annotation.Bean;
2827
import org.springframework.context.annotation.Configuration;
2928
import org.springframework.data.mongodb.MongoDatabaseFactory;
3029
import org.springframework.data.mongodb.MongoTransactionManager;
3130
import org.springframework.data.mongodb.core.MongoTemplate;
3231
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
3332
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
33+
import org.testcontainers.containers.MongoDBContainer;
34+
import org.testcontainers.utility.DockerImageName;
3435

3536
/**
3637
* @author Mahmoud Ben Hassine
38+
* @author Yanming Zhou
3739
*/
3840
@Configuration
3941
@EnableBatchProcessing
4042
class MongoDBIntegrationTestConfiguration {
4143

44+
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
45+
46+
@Bean(initMethod = "start")
47+
public MongoDBContainer mongoDBContainer() {
48+
return new MongoDBContainer(MONGODB_IMAGE);
49+
}
50+
4251
@Bean
4352
public JobRepository jobRepository(MongoTemplate mongoTemplate, MongoTransactionManager transactionManager)
4453
throws Exception {
@@ -60,8 +69,8 @@ public JobExplorer jobExplorer(MongoTemplate mongoTemplate, MongoTransactionMana
6069
}
6170

6271
@Bean
63-
public MongoDatabaseFactory mongoDatabaseFactory(@Value("${mongo.connectionString}") String connectionString) {
64-
return new SimpleMongoClientDatabaseFactory(connectionString + "/test");
72+
public MongoDatabaseFactory mongoDatabaseFactory(MongoDBContainer mongoDBContainer) {
73+
return new SimpleMongoClientDatabaseFactory(mongoDBContainer.getConnectionString() + "/test");
6574
}
6675

6776
@Bean

spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobExplorerIntegrationTests.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,36 +31,22 @@
3131
import org.springframework.beans.factory.annotation.Autowired;
3232
import org.springframework.data.mongodb.core.MongoTemplate;
3333
import org.springframework.test.annotation.DirtiesContext;
34-
import org.springframework.test.context.DynamicPropertyRegistry;
35-
import org.springframework.test.context.DynamicPropertySource;
3634
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
37-
import org.testcontainers.containers.MongoDBContainer;
38-
import org.testcontainers.junit.jupiter.Container;
3935
import org.testcontainers.junit.jupiter.Testcontainers;
40-
import org.testcontainers.utility.DockerImageName;
4136

4237
import static org.junit.jupiter.api.Assertions.assertEquals;
4338
import static org.junit.jupiter.api.Assertions.assertFalse;
4439
import static org.junit.jupiter.api.Assertions.assertNotNull;
4540

4641
/**
4742
* @author Henning Pöttker
43+
* @author Yanming Zhou
4844
*/
4945
@DirtiesContext
5046
@Testcontainers(disabledWithoutDocker = true)
5147
@SpringJUnitConfig(MongoDBIntegrationTestConfiguration.class)
5248
public class MongoDBJobExplorerIntegrationTests {
5349

54-
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
55-
56-
@Container
57-
public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE);
58-
59-
@DynamicPropertySource
60-
static void setMongoDbConnectionString(DynamicPropertyRegistry registry) {
61-
registry.add("mongo.connectionString", mongodb::getConnectionString);
62-
}
63-
6450
@BeforeAll
6551
static void setUp(@Autowired MongoTemplate mongoTemplate) {
6652
mongoTemplate.createCollection("BATCH_JOB_INSTANCE");

spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoDBJobRepositoryIntegrationTests.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,8 @@
2626
import org.springframework.test.annotation.DirtiesContext;
2727
import org.springframework.data.domain.Sort;
2828
import org.springframework.data.mongodb.core.index.Index;
29-
import org.springframework.test.context.DynamicPropertyRegistry;
30-
import org.springframework.test.context.DynamicPropertySource;
3129
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
32-
import org.testcontainers.containers.MongoDBContainer;
33-
import org.testcontainers.junit.jupiter.Container;
3430
import org.testcontainers.junit.jupiter.Testcontainers;
35-
import org.testcontainers.utility.DockerImageName;
3631

3732
import org.springframework.batch.core.ExitStatus;
3833
import org.springframework.batch.core.Job;
@@ -45,22 +40,13 @@
4540

4641
/**
4742
* @author Mahmoud Ben Hassine
43+
* @author Yanming Zhou
4844
*/
4945
@DirtiesContext
5046
@Testcontainers(disabledWithoutDocker = true)
5147
@SpringJUnitConfig(MongoDBIntegrationTestConfiguration.class)
5248
public class MongoDBJobRepositoryIntegrationTests {
5349

54-
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
55-
56-
@Container
57-
public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE);
58-
59-
@DynamicPropertySource
60-
static void setMongoDbConnectionString(DynamicPropertyRegistry registry) {
61-
registry.add("mongo.connectionString", mongodb::getConnectionString);
62-
}
63-
6450
@Autowired
6551
private MongoTemplate mongoTemplate;
6652

spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MongoExecutionContextDaoIntegrationTests.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,36 +37,22 @@
3737
import org.springframework.data.mongodb.core.MongoOperations;
3838
import org.springframework.data.mongodb.core.MongoTemplate;
3939
import org.springframework.test.annotation.DirtiesContext;
40-
import org.springframework.test.context.DynamicPropertyRegistry;
41-
import org.springframework.test.context.DynamicPropertySource;
4240
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
43-
import org.testcontainers.containers.MongoDBContainer;
44-
import org.testcontainers.junit.jupiter.Container;
4541
import org.testcontainers.junit.jupiter.Testcontainers;
46-
import org.testcontainers.utility.DockerImageName;
4742

4843
import static org.junit.jupiter.api.Assertions.assertEquals;
4944
import static org.junit.jupiter.api.Assertions.assertTrue;
5045
import static org.junit.jupiter.api.Assertions.assertNotNull;
5146

5247
/**
5348
* @author Henning Pöttker
49+
* @author Yanming Zhou
5450
*/
5551
@DirtiesContext
5652
@Testcontainers(disabledWithoutDocker = true)
5753
@SpringJUnitConfig({ MongoDBIntegrationTestConfiguration.class, ExecutionContextDaoConfiguration.class })
5854
public class MongoExecutionContextDaoIntegrationTests {
5955

60-
private static final DockerImageName MONGODB_IMAGE = DockerImageName.parse("mongo:8.0.1");
61-
62-
@Container
63-
public static MongoDBContainer mongodb = new MongoDBContainer(MONGODB_IMAGE);
64-
65-
@DynamicPropertySource
66-
static void setMongoDbConnectionString(DynamicPropertyRegistry registry) {
67-
registry.add("mongo.connectionString", mongodb::getConnectionString);
68-
}
69-
7056
@BeforeAll
7157
static void setUp(@Autowired MongoTemplate mongoTemplate) {
7258
mongoTemplate.createCollection("BATCH_JOB_INSTANCE");

0 commit comments

Comments
 (0)