2011-07-01 48 views
8

Tôi có một dự án mùa xuân maven (phiên bản mới nhất) và tôi muốn viết một số bài kiểm tra junit (phiên bản mới nhất).kiểm tra junit mùa xuân

Vấn đề tôi có là đậu mùa xuân của tôi là autowired, và khi tôi gọi chúng từ kiểm tra junit, tôi nhận được ngoại lệ con trỏ null, như mùa xuân không autowire chúng.

Làm cách nào để tải ngữ cảnh để mọi thứ được tự động?

Trả lời

21

Bạn đã học Testing chương trong tài liệu tham chiếu mùa xuân chưa? Dưới đây là một ví dụ bạn nên bắt đầu với:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration 
public class MyTest { 

    @Resource 
    private FooService fooService; 

    // class body... 
} 

Nếu bạn đang ở trong com.example.MyTest trong /src/test/java, bạn sẽ cần /src/test/resources/com/example/MyTest-context.xml - nhưng trường hợp ngoại lệ sẽ cho bạn thấy đường đi.

+1

+1 trong 22 giây :) – abalogh

+0

:-) Đoạn mã của chúng tôi tương tự đáng ngờ của chúng tôi, tôi ngửi thấy cùng một tham chiếu mà cả hai chúng tôi đã sử dụng ;-). –

+0

http://static.springsource.org/spring/docs/3.0.x/reference/testing.html, không có thắc mắc :) – abalogh

5

Bạn nên sử dụng SpringJUnit4ClassRunner trong các lớp thử nghiệm của mình và sử dụng @Resource (hoặc @Autowired) trên trường trong lớp thử nghiệm chứa bean. Bạn nên xem xét có một bối cảnh thử nghiệm đặc biệt Cấu hình mùa xuân sử dụng các bài kiểm tra để các bài kiểm tra của bạn là các bài kiểm tra đơn vị chính hãng và không dựa vào toàn bộ ngữ cảnh ứng dụng.

12

Đây là một khả năng:

@RunWith(SpringJUnit4ClassRunner.class) 
// ApplicationContext will be loaded from "/applicationContext.xml" 
// in the root of the classpath 
@ContextConfiguration({"/applicationContext.xml"}) 
public class MyTest { 
// class body... 
} 

Thông thường đó là một ý tưởng tốt mặc dù có một bài kiểm tra-applicationContext cho cơ sở hạ tầng thử nghiệm của bạn.

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