Я не могу инициализировать член @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 и создаю экземпляр bean-компонента во время построения, тест пройдет нормально:
@SpringBootTest
class SnackQueryResolverTest {
private val snackQueryResolver: SnackQueryResolver = SnackQueryResolver()
@Test
fun `snacks`() {
val snacks = snackQueryResolver.snacks()
snacks.size `should be equal to` 5
}
}
Что мне не хватает?