Я должен выполнить тест для некоторого весеннего приложения.Я использую аннотацию @SpringBootTest в своем тесте:
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class MyTest(){
//some tests...
}
Он работает нормально, но я не хочу загружать весь контекст приложения и ограничивать его, добавляя один или несколько классов конфигурации.Я сделал это с помощью @ContextHierarchy:
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ContextHierarchy(ContextConfiguration(classes = [SomeCofigClass1::class, SomeConfigClass2::class]))
class MyTest(){
//some tests...
}
//for example
class SomeCofigClass1(){
@Bean
fun(someMongoRepository: SomeMongoRepository){ \\<-- Problem is here
return SomeService(someMongoRepository)
}
}
/**
* My repository.
*/
interface SomeMongoRepository : MongoRepository<Job, String> {}
Из-за того, что контекст частично загружен, я получил ошибку:
No qualifying bean of type 'SomeMongoRepository' available:....
Как я могу загрузить репозиторий в контексте тестового приложения?
Я уже пробовал:
1) Добавлен @AutoConfigureDataMongo.Я получил ошибку java.lang.IllegalStateException: невозможно получить базовые пакеты @EnableAutoConfiguration
@SpringBootTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ContextHierarchy(ContextConfiguration(classes = [SomeCofigClass1::class, SomeConfigClass2::class]))
@AutoConfigureDataMongo
2) Заменен @SpringBootTest на @DataMongoTest.Я получил ошибку Невозможно получить базовые пакеты @EnableAutoConfiguration
@DataMongoTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ContextHierarchy(ContextConfiguration(classes = [SomeCofigClass1::class, SomeConfigClass2::class]))
3) С @DataMongoTest заменили @ContextHierarchy на @Import.С аннотацией @Import загружается весь контекст приложения.Это не подходит для меня.
@DataMongoTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Import(SomeCofigClass1::class, SomeConfigClass2::class)