2012-07-13 64 views
5

一旦我添加RunWith註釋,那就是@RunWith(PowerMockRunner.class) Spring Autowire不再有效!爲什麼Spring Autowire在添加「RunWith」註釋時停止工作?

class B { 
    @Autowire 
    SessionFactory session; 
} 

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

class Testing { 

    @Test 
    methodA(){ 
    //mehod 
    } 

    @Test 
    methodD(){ 
    }  
} 

現在,方法A使得B類的電話,但由於RunWith(PowerMockRunner)註釋,自動裝配不工作。任何幫助將不勝感激!

+1

什麼的「前」情況下的樣子。 @Autowire不只是工作。你以前在使用Spring Test Runner或MockitoJUnitRunner還是其他的東西? – jhericks 2012-07-14 00:35:44

+1

而不是自動配線,使用Whitebox或setter將字段設置爲模擬。你可以通過這種方式更好地控制班上發生的事情。 – 2012-07-14 02:30:51

+0

嗨jhericks,當它運行時,RunWith稱RunWith(SpringJUnit4ClassRunner) – TimeToCodeTheRoad 2012-07-16 17:38:21

回答

1

春天不是魔術(即使它有時似乎)。沒有你的代碼中的哪個地方讓你有機會啓動一個應用程序上下文,並執行自動連接你的bean的工作。您需要自己啓動環境或將測試切換爲使用@RunWith(SpringJUnit4ClassRunner.class)。不幸的是JUnit一次只支持一個跑步者,所以你需要停止使用PowerMockRunner。