5

Tôi đang cố gắng tìm ra cách xây dựng các bài kiểm tra tích hợp trên một ứng dụng Khởi động Spring sử dụng Eureka. Nói rằng tôi có một bài kiểm traThử nghiệm tích hợp Dịch vụ Khởi động mùa xuân bằng dịch vụ 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))); 

    } 
} 

và tôi có trong đường dẫn mã của tôi cho rằng cuộc gọi api:

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

Điều này sẽ NPE. DiscoverClient được trả về là null. Mã hoạt động tốt nếu tôi khởi động ứng dụng Khởi động trực tiếp và tự sử dụng API. Tôi không có sử dụng hồ sơ cụ thể ở bất cứ đâu. Có gì đặc biệt wrka Eureka mà tôi cần phải cấu hình cho các khách hàng khám phá để có được xây dựng để thử nghiệm?

+2

Có một lý do bạn không thể/không muốn chạy thử nghiệm của bạn với ' @ IntegrationTest' như [ở đây] (https://github.com/spring-cloud-samples/eureka/blob/master/src/test/java/eurekademo/ApplicationTests.java)? –

+0

Yup .. bạn nói đúng. Tôi có thể sử dụng '@ IntegrationTest' hoặc' @ WebIntegrationTest'. Không thể cập nhật tất cả các chú thích mới này! Giải quyết vấn đề một cách hoàn hảo. Tôi sẽ trả lời và sửa đổi mã cho người khác. – RubesMN

Trả lời

6

Nhờ @Donovan đã trả lời trong phần nhận xét. Có những chú thích được xây dựng bởi Phillip Web và Dave Syer trong gói org.springframework.boot.test mà tôi không biết. Muốn cung cấp câu trả lời với mã đã thay đổi. Thay đổi các chú thích lớp:

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

hoặc nếu bạn đang sử dụng khởi động mùa xuân 1.2.1 và lớn

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

Điều này giải quyết sự khởi động, nhưng làm thế nào để bạn cung cấp URL của hệ thống xung quanh trong ứng dụng eureka giả này? –

Các vấn đề liên quan