如何使用MicronautTest和Kotlintest在测试时注入bean?在科特林

如何使用MicronautTest和Kotlintest在测试时注入bean?在科特林,kotlin,micronaut,kotlintest,Kotlin,Micronaut,Kotlintest,如何将以下内容注入测试,因为不允许使用构造函数参数 而且它无法初始化注入的豆子 @MicronautTest class ApplicationTest:StringSpec() { @Inject lateinit val embeddedServer:EmbeddedServer; @Inject lateinit val dataSource:DataSource init{ "test something"{

如何将以下内容注入测试,因为不允许使用构造函数参数 而且它无法初始化注入的豆子

@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一样传递给父类构造函数,所以必须使用构造函数注入

@MicronautTest
class ApplicationTest(
    private val embeddedServer: EmbeddedServer,
    private val dataSource: DataSource
): StringSpec({

    "test something"{
        //arrange act assert
    }

})

您可以查看项目中的任何测试以获得运行示例

您需要通过创建从AbstractProjectConfig派生的对象来指定项目配置,将该对象命名为ProjectConfig,并将其放入名为io.kotlintest.provided的包中。KotlinTest将检测它的存在,并在执行测试时使用其中定义的任何配置。 根据文件


如果您这样编写代码,请尝试var。无参数构造函数不起作用是什么意思?是@Inject micronaut注释还是spring?文档中给出了它,但我得到了java.lang.IllegalArgumentException:类应该有一个无参数构造函数
object ProjectConfig :AbstractProjectConfig() {
override fun listeners() = listOf(MicornautKotlinTestExtension)
override fun extensions() = listOf(MicornautKotlinTestExtension)
}