如何在测试时使用微毛test用kotlintest进行注入豆子?在科特林



如何将以下内容注入测试,因为不允许构造器args它未能初始化注入的豆

@MicronautTest
class ApplicationTest:StringSpec() {
    @Inject
    lateinit val embeddedServer:EmbeddedServer;
    @Inject
    lateinit val dataSource:DataSource
    init{
        "test something"{
            //arrange act assert
        }
    }
}

您需要通过创建从AbstractProjectConfig派生的对象,命名此对象ProjectConfig并将其放入称为io.kotlintest.providerd的软件包中。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)
}

因为测试用例像lambda一样传递给父类构造函数,因此您必须使用构造函数注入

@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/master/test-kotlintest/src/test/kotlin

您是否尝试过这样的代码?

@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
        }
    }
}

这应该有效。

相关内容

  • 没有找到相关文章

最新更新