我正在使用 testcontainers:mongodb 在示例 spring boot kotlin 项目中设置集成测试。
我已经设置了 MongoDBContaine,一切都按预期工作 - 应用程序连接到 mongodb 并使用存储库进行测试(例如保存、删除)工作得很好,但我注意到测试运行(成功)后 mongodb.driver最后抛出异常 - 看起来容器没有被优雅地关闭/停止 - 这可能吗?
我如何启动容器的示例
companion object {
@Container
var mongoDBContainer = MongoDBContainer("mongo:4.4.2")
@JvmStatic
@DynamicPropertySource
fun setProperties(registry: DynamicPropertyRegistry) {
registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl }
}
}
Run Code Online (Sandbox Code Playgroud)
测试方法
@Test fun someTest() {
autowiredRepository.save(document)
...
...
}
Run Code Online (Sandbox Code Playgroud)
至于运行类,我只是在其之上使用 @Testcontainers 注释和 @SpringBootTest,没有其他任何东西。
我最后得到的例外是
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.internal.connection.SocketStream.read(SocketStream.java:112) ~[mongodb-driver-core-4.2.3.jar:na]
at com.mongodb.internal.connection.SocketStream.read(SocketStream.java:131) ~[mongodb-driver-core-4.2.3.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:647) ~[mongodb-driver-core-4.2.3.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.receiveMessageWithAdditionalTimeout(InternalStreamConnection.java:512) ~[mongodb-driver-core-4.2.3.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:355) ~[mongodb-driver-core-4.2.3.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.receive(InternalStreamConnection.java:315) ~[mongodb-driver-core-4.2.3.jar:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:215) ~[mongodb-driver-core-4.2.3.jar:na] …Run Code Online (Sandbox Code Playgroud) mongodb kotlin spring-boot testcontainers testcontainers-junit5
我正在使用最新的 2.13.0 版本的 jackson,当我尝试解析 YAML 文件时,出现此异常
java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.io.ContentReference com.fasterxml.jackson.dataformat.yaml.YAMLFactory._createContentReference(java.lang.Object)'
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
我包含的依赖项是 jackson-core、jackson-databind 和 jackson-dataformat-yaml - 全部为 2.13.0
考虑以下不带任何参数的泛型方法的示例:
private <T> Set<T> create() {
return new HashSet<T>();
}
Run Code Online (Sandbox Code Playgroud)
根据文档,类型将根据返回值的使用方式(即在赋值期间)从定义的 LHS 类型推断,例如:
Set<Integer> numbers = create();
Run Code Online (Sandbox Code Playgroud)
使用关键字时效果如何var?
将编译以下内容:
var numbers = create();
Run Code Online (Sandbox Code Playgroud) 我遇到了几个例子,其中人们共享代码来计算两天之间的差异。
例如。
$now = new DateTime();
$itemDate->diff($now)->format("%r%a")
Run Code Online (Sandbox Code Playgroud)
但几乎总是这些类型的帖子并没有真正解释格式参数是关于什么的。我对常规日期格式参数没问题,但(在这种情况下)不确定例如。%r。
我在 Goland 识别我的进口产品时遇到问题。
所以,有了这样的基本样本结构
- main.go
- go.mod
- folder/something.go
Run Code Online (Sandbox Code Playgroud)
来自不被认可的进口folder。
例如,导入以下内容main.go无效,Goland 抱怨该消息Cannot resolve directory somename
import "somename/folder"
Run Code Online (Sandbox Code Playgroud)
go.mod 初始化为go mod init somename
为什么会发生这种情况?为什么 Goland 无法解析我创建的模块的某些名称?