Polish MongoDB integration tests

Move MongoDB container setup from tests to centralized configuration

Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
This commit is contained in:
Yanming Zhou
2025-03-27 12:29:51 +08:00
committed by Mahmoud Ben Hassine
parent a3e59b526e
commit dcf95987c9
4 changed files with 15 additions and 48 deletions

View File

@@ -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

View File

@@ -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");

View File

@@ -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;

View File

@@ -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");