2010-03-11 98 views

回答

37

因爲測試將被實例化就像一個Spring bean也一樣,你只需要實現ApplicationContextAware接口:如果你的測試類繼承了Spring JUnit類

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"/services-test-config.xml"}) 
public class MySericeTest implements ApplicationContextAware 
{ 

    @Autowired 
    MyService service; 
... 
    @Override 
    public void setApplicationContext(ApplicationContext context) 
      throws BeansException 
    { 
     // Do something with the context here 
    } 
} 
+0

不可能在Spring 3.0及以上者,到這個日期。 – ALOToverflow 2010-12-09 18:44:26

+2

奇怪的是,我正在運行我所有的Spring 3.0測試... – Daff 2010-12-09 18:57:48

5


(如,AbstractTransactionalJUnit4SpringContextTests或任何其他延伸爲AbstractSpringContextTests的類),則可以通過調用getContext()方法來訪問應用程序上下文。
查看包org.springframework.test的包javadocs

+0

使用AbstractTransactionalJUnit4SpringContextTests或AbstractSpringContextTests與簡單地在我的junit測試中擴展ApplicationContextAware有什麼區別嗎?在這個答案中建議的2個抽象測試類提供了什麼好處? – 2017-02-20 20:02:51

56

這工作太細:

@Autowired 
ApplicationContext context; 
+0

已確認,在Spring Integration 3.0.2中。最新的解決方案。 – Wrench 2015-11-05 17:43:28

+0

但是,只有當您將它用於託管bean時,此解決方案纔可行。通過實現ApplicationContextAware在POJO中運行良好 – Aditzu 2016-07-28 12:16:13

+0

春季4.2正常工作 – cabaji99 2017-12-01 14:09:39

相關問題