Как ввести следующее в Test, поскольку аргументы конструктора не разрешены и не удалось инициализировать внедренные beans
@MicronautTest
class ApplicationTest:StringSpec() {
@Inject
lateinit val embeddedServer:EmbeddedServer;
@Inject
lateinit val dataSource:DataSource
init{
"test something"{
//arrange act assert
}
}
}
Ответ 1 · рейтинг 3 · Swanand Keskar
Вам необходимо указать конфигурацию проекта, создав объект, производный от 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)
}
Ответ 2 · рейтинг 1 · James Kleeh
Поскольку тестовые примеры передаются конструктору родительского класса как лямбда, вы должны использовать внедрение конструктора.
@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
Ответ 3 · Xavier Bouclet
Вы пробовали писать такой код?
@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
}
}
}
Это должно сработать.