5

Eureka'yı kullanan bir Spring Boot uygulamasında entegrasyon testlerinin nasıl oluşturulacağını anlamaya çalışıyorum.Entegrasyon Testi Eureka hizmetlerini kullanarak Spring Boot hizmeti

DiscoveryManager.getInstance().getDiscoveryClient().getApplications(); 

Bu irade NPE: Bir test

@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))); 

    } 
} 

var ve bu API çağrısı için benim kod yolunda olduğunu düşünelim. DiscoveryClient boş olarak döndürülür. Doğrudan Bahar önyükleme uygulamasına başlıyorum ve API'yi kendim kullanırsam kod iyi çalışır. Herhangi bir yerde belirli bir profil kullanımı yok. Test için yapılandırılmak üzere keşif istemcisi için yapılandırmam gereken özel bir Eureka wrt var mı?

+2

sen/'ile testi çalıştırmak için istemiyorum olamaz bir neden var mı @ Entegrasyon Testi '[https://github.com/spring-cloud-samples/eureka/blob/master/src/test/java/eurekademo/ApplicationTests.java] gibi mi? –

+0

Yup .. haklısın. 'Entegrasyon Testi 'veya' Webİntegrasyon Testi’yi kullanabilirim. Bütün bu yeni ek açıklamaları takip et! Problemi mükemmel bir şekilde çözer. Diğerleri için kodu cevaplayacağım ve değiştireceğim. – RubesMN

cevap

6

Yorumları yanıtlayan @Donovan'a teşekkürler. Bilinmiyor olduğum org.springframework.boot.test paketinde Phillip Web ve Dave Syer tarafından yapılan ek açıklamalar var. Değiştirilen kod ile bir cevap vermek istedim. sınıf ek açıklamaları değiştirin:

@WebAppConfiguration 
@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = {Application.class}) 
@IntegrationTest 

veya bahar çizme 1.2.1 ve kullanıyorsanız daha

@WebIntegrationTest 
@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = {Application.class}) 
+1

Bu, başlatmayı çözüyor, ancak bu sahte eureka istemcisindeki çevreleyen sistemin URL'lerini nasıl sağlıyorsunuz? –