2016-07-19 18 views
5

Tôi có một ứng dụng khởi động mùa xuân với lớp học chính như dưới đây:mùa xuân cấu hình thử nghiệm khởi động

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Bây giờ tôi muốn thử nghiệm dịch vụ của tôi và tạo ra một lớp thử nghiệm cơ sở:

@SpringApplicationConfiguration(Application.class) 
public abstract class TestBase { 
} 

Khi tôi chạy thử nghiệm của tôi tôi nhận được ngoại lệ:

Caused by: java.lang.IllegalArgumentException: Can not load an ApplicationContext with a NULL 'contextLoader'. Consider annotating your test class with @ContextConfiguration. 
    at org.springframework.util.Assert.notNull(Assert.java:115) 
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:117) 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148) 

Sau đó, tôi thay đổi lớp thử nghiệm cơ sở của tôi sử dụng ContextConfiguration

@ContextConfiguration(classes = Application.class) 
public abstract class TestBase { 
} 

Lần này tôi gặp lỗi khởi tạo DataSource. Tôi tự hỏi tại sao nó là thất bại trong trường hợp đầu tiên và tại sao trong trường hợp thứ hai nó không tải application.properties nơi tôi đã cấu hình nguồn dữ liệu.

Cảm ơn bạn!

+0

JUnit hoặc TestNG? – luboskrnac

+0

Vui lòng bao gồm khai báo lớp kiểm tra không thành công ngoài lớp 'TestBase'. –

+0

cảm ơn bạn, tôi đã xoay sở để giải quyết vấn đề này. Đó là một cấu hình xấu. – sansari

Trả lời

2
@RunWith(SpringRunner.class) 
@SpringBootTest(classes="Application.class") 
public class ApplicationTest{ 

@Autowire 
Foo foo //whatever you are testing 

@Test 
public void FooTest() throws Exception{ 
    Foo f = foo.getFooById("22"); 
    assertEquals("9B". f.getCode); 
} 

Something like that 

//TODO look into MockMVC for testing services 


} 
0

tôi phải đối mặt với cùng một vấn đề đó là vì ServletInitializer của tôi là trong gói khác nhau. Sự cố được giải quyết sau khi sửa cấu trúc gói.

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