2012-07-13 23 views
5

Khi tôi thêm chú thích RunWith, tức là @RunWith(PowerMockRunner.class) Spring Autowire không hoạt động nữa!Tại sao Spring Autowire ngừng hoạt động khi tôi thêm chú thích "RunWith"?

class B { 
    @Autowire 
    SessionFactory session; 
} 

@RunWith(PowerMockRunner.class) 
@PrepareForTest{SomeClass.class} 

class Testing { 

    @Test 
    methodA(){ 
    //mehod 
    } 

    @Test 
    methodD(){ 
    }  
} 

Bây giờ, phương pháp A thực hiện cuộc gọi đến lớp B, nhưng do chú thích không hoạt động. Mọi sự trợ giúp sẽ rất được trân trọng!

+1

Gì 'trước khi' trường hợp cái nhìn như thế nào. @Autowire không chỉ hoạt động. Bạn đã sử dụng một số Á hậu thử nghiệm mùa xuân hoặc MockitoJUnitRunner hoặc cái gì khác khi nó đã được làm việc trước? – jhericks

+1

Thay vì kết nối tự động, hãy sử dụng Whitebox hoặc các bộ định vị để đặt trường thành mô hình. Bạn có thể kiểm soát nhiều hơn những gì đang xảy ra trong lớp của bạn theo cách đó. –

+0

hi jhericks, khi nó đang chạy, RunWith cho biết RunWith (SpringJUnit4ClassRunner) – TimeToCodeTheRoad

Trả lời

1

Mùa xuân không phải là ma thuật (ngay cả khi nó có vẻ như nó đôi khi). Không có nơi nào trong mã của bạn là bạn cho mùa xuân một cơ hội để bắt đầu một bối cảnh ứng dụng và làm công việc của nó tự động nối dây đậu của bạn. Bạn cần tự khởi chạy ngữ cảnh hoặc chuyển đổi bài kiểm tra của mình để sử dụng @RunWith(SpringJUnit4ClassRunner.class). Thật không may JUnit chỉ hỗ trợ một Á hậu đơn tại một thời điểm, do đó bạn sẽ cần phải ngừng sử dụng PowerMockRunner sau đó.

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