如何在测试时使用 MicronautTest 和 Kotlintest 注入 bean?在科特林
How to use MicronautTest with Kotlintest to inject beans while testing ? in Kotlin
如何将以下内容注入到测试中,因为不允许使用构造函数参数
并且未能初始化注入的 bean
@MicronautTest
class ApplicationTest:StringSpec() {
@Inject
lateinit val embeddedServer:EmbeddedServer;
@Inject
lateinit val dataSource:DataSource
init{
"test something"{
//arrange act assert
}
}
}
你试过这样写代码吗?
@MicronautTest
class ApplicationTest:StringSpec() {
val embeddedServer:EmbeddedServer
val dataSource:DataSource
@Inject
ApplicationTest(embeddedServer:EmbeddedServer, dataSource:DataSource) {
this.embeddedServer = embeddedServer
this.dataSource = dataSource
}
init{
"test something"{
//arrange act assert
}
}
}
这应该有效。
因为测试用例像 lambda 一样传递给父 class 构造函数,所以您必须使用构造函数注入
@MicronautTest
class ApplicationTest(
private val embeddedServer: EmbeddedServer,
private val dataSource: DataSource
): StringSpec({
"test something"{
//arrange act assert
}
})
您可以查看项目中的任何测试以获取 运行 示例。 https://github.com/micronaut-projects/micronaut-test/blob/master/test-kotlintest/src/test/kotlin
您需要通过创建从 AbstractProjectConfig 派生的对象来指定项目配置,将此对象命名为 ProjectConfig 并将其放在名为 io.kotlintest.provided 的包中。 KotlinTest 将检测它的存在并在执行测试时使用那里定义的任何配置。
根据文档
https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#project-config
object ProjectConfig :AbstractProjectConfig() {
override fun listeners() = listOf(MicornautKotlinTestExtension)
override fun extensions() = listOf(MicornautKotlinTestExtension)
}
如何将以下内容注入到测试中,因为不允许使用构造函数参数 并且未能初始化注入的 bean
@MicronautTest
class ApplicationTest:StringSpec() {
@Inject
lateinit val embeddedServer:EmbeddedServer;
@Inject
lateinit val dataSource:DataSource
init{
"test something"{
//arrange act assert
}
}
}
你试过这样写代码吗?
@MicronautTest
class ApplicationTest:StringSpec() {
val embeddedServer:EmbeddedServer
val dataSource:DataSource
@Inject
ApplicationTest(embeddedServer:EmbeddedServer, dataSource:DataSource) {
this.embeddedServer = embeddedServer
this.dataSource = dataSource
}
init{
"test something"{
//arrange act assert
}
}
}
这应该有效。
因为测试用例像 lambda 一样传递给父 class 构造函数,所以您必须使用构造函数注入
@MicronautTest
class ApplicationTest(
private val embeddedServer: EmbeddedServer,
private val dataSource: DataSource
): StringSpec({
"test something"{
//arrange act assert
}
})
您可以查看项目中的任何测试以获取 运行 示例。 https://github.com/micronaut-projects/micronaut-test/blob/master/test-kotlintest/src/test/kotlin
您需要通过创建从 AbstractProjectConfig 派生的对象来指定项目配置,将此对象命名为 ProjectConfig 并将其放在名为 io.kotlintest.provided 的包中。 KotlinTest 将检测它的存在并在执行测试时使用那里定义的任何配置。 根据文档 https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#project-config
object ProjectConfig :AbstractProjectConfig() {
override fun listeners() = listOf(MicornautKotlinTestExtension)
override fun extensions() = listOf(MicornautKotlinTestExtension)
}