У меня есть два приложения с весенней загрузкой, которые общаются друг с другом через ArtemisMQ. Я хотел бы сделать интеграционное тестирование с помощью родительского проекта, где я могу охватить оба контекста приложения. Таким образом, было бы легко написать интеграционные тесты.
Я пытался определить иерархию контекста, но существует конфликт имен между сгенерированными именами бинов. Есть ли способ решить мою проблему?
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextHierarchy({@ContextConfiguration(name = "root", classes = IntegrationTestApplication.class),
@ContextConfiguration(name = "child", classes = AppServiceConfiguration.class),
@ContextConfiguration(name = "child", classes = com.otherapplication.app.service.AppServiceConfiguration.class)})
public class IntegrationTest {
@Autowired
private CompanyApi companyApi;
@Autowired
private DataSourceApi dataSourceApi;
@Test
public void contextLoads() {
//appliction1
List<CompanyDto> fetchAllCompany = companyApi.fetchAllCompany();
//application2
List<DataSourceDto> findAll = dataSourceApi.findAll();
}
}
Фактический результат:
Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'appServiceConfiguration' defined in null: Cannot register bean definition [Generic bean: class [com.otherapplication.app.service.AppServiceConfiguration]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] for bean 'appServiceConfiguration': There is already [Generic bean: class [com.application.app.service.AppServiceConfiguration]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] bound.