2015-01-05 25 views
6

Tôi có một dịch vụ xuân sau:Autowire một dịch vụ xuân trong thử nghiệm JUnit

@Service 
public class MyService { 
    public List<int> getIds(Filter filter){ 
     ... 
    } 
} 

và một lớp cấu hình:

@Configuration 
public static class MyApplicationContext { 

    @Bean 
    public Filter filter(ApplicationContext context) { 
     return new Filter(); 
    } 
} 

Bây giờ, tôi muốn tạo một bài kiểm tra đơn vị để kiểm tra xem phương thức getIds trả về kết quả chính xác. Tôi tạo ra một thử nghiệm JUnit sau:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes=MyApplicationContext.class,             
         loader=AnnotationConfigContextLoader.class) 
public class AppTest 
{ 
    @Autowired 
    Filter filter; 

    @Autowired 
    MyService service; 
} 

Trình biên dịch tìm đậu chính xác cho các lớp Lọc nhưng ném "BeanCreationException: Không thể autowire trường" ngoại lệ cho biến dịch vụ. Tôi đã cố gắng thêm lớp dịch vụ vào lớp ContextConfiguration.classes nhưng sau đó trình biên dịch đã ném ngoại lệ "IllegalStateException: Failed to load ApplicationContext".

Làm cách nào để bao gồm MyService trong ContextConfiguration?

+0

dán đầy đủ stack trace xin vui lòng? Và bạn đã định nghĩa bất kỳ hạt nào trong xml cũng sẽ giúp (nếu có) – SMA

+0

Bạn phải [kể mùa xuân] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context /annotation/ComponentScan.html) để quét các chú thích '@ Service' –

Trả lời

8

Thêm chú thích sau đây để MyApplicationContext cho các dịch vụ được quét @ComponentScan("myservice.package.name")

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