Sto cercando di capire come compilare i test di integrazione su un'applicazione Spring Boot che utilizza Eureka. Dire che ho un testTest di avvio Servizio di avvio a molla con servizi 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)));
}
}
e ho nel mio percorso di codice per quella chiamata API:
DiscoveryManager.getInstance().getDiscoveryClient().getApplications();
Questa volontà NPE. Il discoveryClient viene restituito come null. Il codice funziona correttamente se avvio direttamente l'app di avvio Spring e utilizzo l'API personalmente. Non ho un utilizzo specifico del profilo da nessuna parte. C'è qualcosa di speciale in Eureka che devo configurare affinché il client di scoperta possa essere costruito per i test?
C'è un motivo non si può/non si vuole eseguire il test con ' @ IntegrationTest' come [qui] (https://github.com/spring-cloud-samples/eureka/blob/master/src/test/java/eurekademo/ApplicationTests.java)? –
Sì .. hai ragione. Potrei usare '@ IntegrationTest' o' @ WebIntegrationTest'. Non riesci a tenere il passo con tutte queste nuove annotazioni! Risolve il problema perfettamente. Risponderò e modificherò il codice per gli altri. – RubesMN