Участник @Autowired не инициализирован в тесте Junit 5, написанном в Kotlin - PullRequest
0 голосов
/ 10 января 2020

Не удается инициализировать член @Autowired в тесте JUnit 5. Вот тест:

import org.amshove.kluent.`should be equal to`
import org.junit.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.context.TestConfiguration
import org.springframework.context.annotation.Bean

@SpringBootTest
class SnackQueryResolverTest {
    @TestConfiguration
    class SnackQueryResolverTestConfig {
        @Bean
        fun snackQueryResolverFactory() = SnackQueryResolver()
    }

    @Autowired
    private lateinit var snackQueryResolver: SnackQueryResolver

    @Test
    fun `snacks`() {
        val snacks = snackQueryResolver.snacks()
        snacks.size `should be equal to` 5
    }
}

Когда тест выполняется, я получаю сообщение об ошибке:

kotlin.UninitializedPropertyAccessException: lateinit property snackQueryResolver has not been initialized

Если я исключаю @Autowired и создаю экземпляр компонента во время построения, тест выполняется нормально :

@SpringBootTest
class SnackQueryResolverTest {
    private val snackQueryResolver: SnackQueryResolver = SnackQueryResolver()

    @Test
    fun `snacks`() {
        val snacks = snackQueryResolver.snacks()
        snacks.size `should be equal to` 5
    }
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 10 января 2020

Оказывается, небольшая ошибка была причиной проблемы - небрежно с завершением кода IDE. Для @Test я импортировал:

import org.junit.Test

, вместо этого его необходимо использовать для тестов JUnit 5:

import org.junit.jupiter.api.Test
...