У меня есть вопрос: что будет правильной конфигурацией для загрузки только класса Enpoint, который я хочу протестировать в этом интеграционном тесте, а не полного контекста приложения (не всех классов Enpoint)? Прямо сейчас у меня есть:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {WebServiceConfigTest.class}, properties = {"application.address=http://hostname:port/context"})
public class MyEndpointTest {
@Autowired
private ApplicationContext applicationContext;
private MockWebServiceClient mockClient;
@Before
public void init() {
mockClient = MockWebServiceClient.createClient(applicationContext);
MockitoAnnotations.initMocks(this);
}
@Test
public void test1(){}
....
}
в WebServiceConfigTest:
@ComponentScan("mypackages.soap")
@ContextConfiguration(classes = SoapApplication.class)
@MockBean(classes = {MyService.class})
public class WebServiceConfigTest {
}
SoapApplication:
@ComponentScan({"mypackages"})
@SpringBootApplication
public class SoapApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(SoapApplication.class, args);
}
}
Причина в том, что в Soap модуле у меня есть зависимость модуля Service, которая имеет другие зависимости, и так далее. Если я загружаю весь ApplicaitonContext, то:
- либо мне нужно смоделировать полный список сервисов, которые я использую в Soap модуле
- , либо издеваться над зависимостями модуля Сервиса такие как DataSource, Queues et c.
Если я сделаю второй, модуль Soap узнает о вещах, которых не должно быть. Если я делаю первое, я вынужден издеваться и поддерживать в файле теста конфигурации полный список используемых Сервисов, который может быть длинным.
Любые советы здесь?