单元测试之获取Spring下所有Bean

单元测试中,针对接口的测试是必须的,但是如何非常方便的获取Spring注册的Bean呢?

如果可以获取所有的Bean,这样就可以将这个方法放到基类中,方便后面所有单元测试类的使用,具体实现如下:

 1 import org.apache.log4j.Logger;
 2 import org.junit.AfterClass;
 3 import org.junit.Before;
 4 import org.junit.BeforeClass;
 5 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 6 import org.springframework.context.ApplicationContext;
 7 import org.springframework.context.support.ClassPathXmlApplicationContext;
 8 
 9 public abstract class BaseTest {
10     protected Logger log = Logger.getLogger(this.getClass());
11     protected static ApplicationContext appContext;
12 
13     @BeforeClass
14     public static void setUp() throws Exception {
15         try {
16             long start = System.currentTimeMillis();
17             System.out.println("正在加载配置文件...");
18 
19             appContext =  new ClassPathXmlApplicationContext(new String[]{"spring-config.xml","spring-config-struts.xml"});
20 
21             System.out.println("配置文件加载完毕,耗时:" + (System.currentTimeMillis() - start));
22         } catch (Exception e) {
23             e.printStackTrace();
24         }
25     }
26 
27     public static void main(String[] args) {
28         System.out.println(BaseTest.class.getResource("/"));
29     }
30 
31     protected boolean setProtected() {
32         return false;
33     }
34 
35     @Before
36     public void autoSetBean() {
37         appContext.getAutowireCapableBeanFactory().autowireBeanProperties(this, DefaultListableBeanFactory.AUTOWIRE_BY_NAME, false);
38     }
39 
40     @AfterClass
41     public static void tearDown() throws Exception {
42     }
43 }

这样后面单元测试的类就可以继承自该类来使用,方便快捷。

获取Spring下所有Bean的关键在于首先指定Spring配置文件的路径:

ApplicationContext appContext =  new ClassPathXmlApplicationContext(new String[]{"spring config path"});

然后通过appContext来获取注入的Bean:

appContext.getAutowireCapableBeanFactory().autowireBeanProperties(this, DefaultListableBeanFactory.AUTOWIRE_BY_NAME, false);

当然这里需要利用JUnit的@Before,在执行前操作获取Bean。

转载于:https://my.oschina.net/secyaher/blog/274487

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值