Есть несколько похожих вопросов по stackoverflow, но я не нашел ни одного в моем случае.
В моем интеграционном тесте с загрузкой Spring 2.0.2.RELEASE я создалотдельный класс @Configuration для теста, в котором я определил bean com.example.MyService
.Этот бин используется другим бином в com.example.OtherBean
.
Вот код:
Класс теста:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MyIntegrationTestConfig.class},
webEnvironment = SpringBootTest.WebEnvironment.MOCK)
public class MyService1Test extends MyAbstractServiceIntegrationTest {
@Test
public void someTest() {}
}
Общий реферат по настройке и демонтажу:
public class MyAbstractServiceIntegrationTest{
@Before
public void setUp(){}
@After
public void tearDown()
}
MyIntegrationTestConfig в src /test, который будет использоваться вместо конфигов в src / main: * bean-компонент
@Configuration
@ComponentScan({"com.example"})
public class MyIntegrationTestConfig {
@Bean
public MyService myService() {
return null;
}
}
MyService
может быть пустым для целей тестирования.
Когда я запускаю тест, я продолжаю получатьследующая ошибка:
Нет подходящего компонента типа com.example.MyService: ожидается как минимум 1 компонент, который считается кандидатом autowire.Аннотации зависимостей: {}
Я даже пытался добавить этот внутренний класс в MyServic1Test.Всё равно не помогло:
@TestConfiguration
static class MyServic1TestContextConfiguration {
@Bean(name = "MyService")
public MyService myService() {
return null;
}
}
Есть идеи, что я тут не так сделал?Или я что-то пропустил?
Я подозреваю, что Spring пытается создать bean-компоненты / autowire в папке src / main прежде, чем он даже создаст bean-компонент MyService, определенный в папке src / test.Может ли это быть так?Или существует другой контекст (например, тестовый контекст), в котором находится bean-компонент MyService, в то время как другие bean-компоненты живут в другом контексте и не могут найти MyService.
Дополнительный вопрос: для тестирования интеграции можно использоватьиспользовать webEnvironment = SpringBootTest.WebEnvironment.MOCK, правильно?