wac*_*k93 2 integration-testing mongodb spock spring-boot testcontainers
我开始玩测试容器,在我的旅程开始时我遇到了一些问题(如下)。我为 mysql db 做了类似的事情,它运行良好。我想念一些 mongo 特定的配置吗?根据 [docs][1] 没有什么可做的。
提前感谢您提供任何提示/示例。
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Run Code Online (Sandbox Code Playgroud)
我的代码:
gradle.build
testImplementation "org.testcontainers:spock:1.14.3"
testImplementation "org.testcontainers:mongodb:1.14.3"
Run Code Online (Sandbox Code Playgroud)
应用程序属性
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test
Run Code Online (Sandbox Code Playgroud)
测试
@Testcontainers
class TestContainersExample extends IntegrationSpec {
@Shared
MongoDBContainer mongoDb = new MongoDBContainer()
def "setup"() {
mongoDb.start()
mongoDb.waitingFor(Wait.forListeningPort()
.withStartupTimeout(Duration.ofSeconds(180L)));
}
//test case
}
Run Code Online (Sandbox Code Playgroud)
rie*_*pil 10
测试容器会将 MongoDB 服务器端口映射到您机器上的随机端口。这就是您不能spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test在属性文件中进行硬编码的原因。
JUnit 5 和 Spring Boot >= 2.2.6 的基本设置如下所示
@Testcontainers
public class MongoDbIT {
@Container
public static MongoDBContainer mongoDBContainer = new MongoDBContainer();
@DynamicPropertySource
static void mongoDbProperties(DynamicPropertyRegistry registry) {
registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用不同的 JUnit 或 Spring Boot 版本,请查看以下指南以了解正确的 Testcontainers 设置。
| 归档时间: |
|
| 查看次数: |
2871 次 |
| 最近记录: |