我有多个使用 mongo 测试容器的测试类。为了避免重复代码,我决定创建一个测试配置,而不是多次使用相同的代码声明容器。以下是我的想法:
@TestConfiguration
@Testcontainers
public class MongoTestContainerConfig {
@Container
@ServiceConnection
static final MongoDBContainer MONGO_CONTAINER = new MongoDBContainer("mongo:6.0");
}
但是,当我尝试使用这个配置运行测试时
@DataMongoTest
@Import(MongoTestContainerConfig.class)
class ServiceRepositoryTest {
@Autowired
private MongoTemplate mongoTemplate;
它返回以下异常堆栈跟踪
[localhost:27017] [ ] org.mongodb.driver.cluster:连接到服务器时监视线程中发生异常 localhost:27017 com.mongodb.MongoSocketOpenException:打开套接字时发生异常 原因:java.net.ConnectException:连接被拒绝
当我在测试类中声明测试容器时,一切正常。
@Testcontainers
@DataMongoTest
class CspRepositoryTest {
@Container
@ServiceConnection
private static final MongoDBContainer MONGO_CONTAINER = new MongoDBContainer("mongo:6.0");
将测试容器声明为抽象类,您可以通过实际测试对其进行扩展。像这样: