Я пытаюсь выяснить, как строить интеграционные тесты на приложение загрузки Spring, которая использует Eureka. Скажем, у меня есть тестИнтеграция Тестирование службы Spring загрузки с помощью услуги Eureka
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {Application.class})
public class MyIntegrationTest {
@Autowired
protected WebApplicationContext webAppContext;
protected MockMvc mockMvc;
@Autowired
RestTemplate restTemplate;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
}
@Test
public void testServicesEdgeCases() throws Exception {
// test no registered services
this.mockMvc.perform(get("/api/v1/services").accept(MediaType.APPLICATION_JSON).contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$").value(jsonArrayWithSize(0)));
}
}
и у меня есть в моем пути кода для этого апи вызова:
DiscoveryManager.getInstance().getDiscoveryClient().getApplications();
Это будет NPE. Свойство discoveryClient возвращается как null. Код работает нормально, если я запускаю приложение загрузки Spring непосредственно и сам использую API. У меня нет конкретного использования профиля нигде. Есть ли что-то особенное в отношении Eureka, которое мне нужно настроить для того, чтобы клиент обнаружения был создан для тестирования?
Есть причину, вы не можете/не хотите, чтобы запустить тест с ' @ IntegrationTest' как [здесь] (https://github.com/spring-cloud-samples/eureka/blob/master/src/test/java/eurekademo/ApplicationTests.java)? –
Yup .. вы правы. Я мог бы использовать '@ IntegrationTest' или' @ WebIntegrationTest'. Не соглашайтесь со всеми этими новыми комментариями! Решает проблему отлично. Я отвечу и изменю код для других. – RubesMN