Есть ли какой-нибудь возможный способ сделать интеграционное тестирование для нескольких приложений весенней загрузки в родительском контексте? - PullRequest
1 голос
/ 24 октября 2019

У меня есть два приложения с весенней загрузкой, которые общаются друг с другом через 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.
...