如何在 JUnit 测试期间在 Spring 中使用不同的 MongoDB 数据库
How to use different MongoDB databases in Spring during JUnit tests
我正在使用 JUnit5 为 Spring Boot (2.0) 编写测试,我需要使用不同的数据库来进行 运行 单元测试。我怎么知道我的 Spring 应用程序是否由 JUnit 启动?
我计划在 AbstractMongoConfiguration
中使用它在 mongoClient()
方法上获得不同的 MongoClient
实例。
或者有更好的方法吗?
您可以拥有配置文件特定的 mongo 属性,例如用于测试、开发、生产等的 (URI)
样本测试class(针对 Junit5 更新)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.ActiveProfiles;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@SpringBootTest
@ActiveProfiles(profiles = {"test"})
public class SampleTest {
@Autowired
MongoTemplate mongoTemplate;
//..... Some Test methods goes here ....
}
在上述情况下,我们提供了一个名为 test 的配置文件作为 ActiveProfiles。因此,默认情况下,来自 class 路径(资源)的两个属性将被选中,一个是 application.properties
,另一个是 application-test.properties
。我们要做的是,我们将所有与数据库相关的配置提取到 application.properties.
的对应配置文件中
我的资源文件夹将包含
\资源
-- application.properties
-- application-dev.properties
-- application-prod.properties
-- application-qa.properties
-- application-test.properties
applicaion-test.properties
spring.data.mongodb.uri=mongodb://<test db ip config goes here>/test_app_db
application-dev.properties
spring.data.mongodb.uri=mongodb://<dev ip>/app_db
等等,不同的 mongo bean 可以通过使用配置文件特定的配置来控制。
希望对您有所帮助。
我正在使用 JUnit5 为 Spring Boot (2.0) 编写测试,我需要使用不同的数据库来进行 运行 单元测试。我怎么知道我的 Spring 应用程序是否由 JUnit 启动?
我计划在 AbstractMongoConfiguration
中使用它在 mongoClient()
方法上获得不同的 MongoClient
实例。
或者有更好的方法吗?
您可以拥有配置文件特定的 mongo 属性,例如用于测试、开发、生产等的 (URI)
样本测试class(针对 Junit5 更新)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.ActiveProfiles;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@SpringBootTest
@ActiveProfiles(profiles = {"test"})
public class SampleTest {
@Autowired
MongoTemplate mongoTemplate;
//..... Some Test methods goes here ....
}
在上述情况下,我们提供了一个名为 test 的配置文件作为 ActiveProfiles。因此,默认情况下,来自 class 路径(资源)的两个属性将被选中,一个是 application.properties
,另一个是 application-test.properties
。我们要做的是,我们将所有与数据库相关的配置提取到 application.properties.
我的资源文件夹将包含
\资源
-- application.properties
-- application-dev.properties
-- application-prod.properties
-- application-qa.properties
-- application-test.properties
applicaion-test.properties
spring.data.mongodb.uri=mongodb://<test db ip config goes here>/test_app_db
application-dev.properties
spring.data.mongodb.uri=mongodb://<dev ip>/app_db
等等,不同的 mongo bean 可以通过使用配置文件特定的配置来控制。
希望对您有所帮助。