Не удается инициализировать член @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
}
}
Чего мне не хватает?