我正在尝试使用 TestContainers (https://github.com/testcontainers/testcontainers-java)中的PostgreSQLContainer
来对我的JPA存储库进行单元测试。
我这样声明我的容器:
private val postgresqlContainer = PostgreSQLContainer("postgres:12-alpine")
但是,我在Intellij IDE中遇到了以下错误, :
没有足够的信息来推断类型变量SELF
当我尝试启动该服务时,完全错误是:
错误:(26,43)Kotlin:类型推断失败:信息不足 推断构造函数PostgreSQLContainer中的参数SELF!>(p0:String!)请指定它 明确地。
答案 0 :(得分:11)
此技巧也有效
private val postgresqlContainer = PostgreSQLContainer<Nothing>().apply {
withDatabaseName("x")
withUsername("y")
withPassword("z")
}
答案 1 :(得分:1)
TestContainers依赖于泛型类型C<Self extends C<SELF>>
的构造,但是 Kotlin 不喜欢这样。
我的解决方法是定义自己的工厂类:
class MyPostgreSQLContainer(imageName: String) : PostgreSQLContainer<MyPostgreSQLContainer>(imageName)
我可以这样使用它:
private val postgresqlContainer = MyPostgreSQLContainer("postgres:12-alpine")