【转】SpringTest框架JUnit单元测试用例获取ApplicationContext实例的方法
转自:http://www.coderli.com/junit-spring-test-applicationcontext
JUnit单元测试用例中使用Spring框架,直接方式如下。
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/spring/applicationContext.xml" }) public class SpringTest {}
想要获取ApplicationContext实例。可以添加了对ApplicationContext的注入
RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/spring/applicationContext.xml" }) public class SpringTest { @Autowired protected ApplicationContext ctx;
Spring中早已直接提供了更加方便使用的基类:AbstractJUnit4SpringContextTests
@ContextConfiguration(locations = { "/spring/applicationContext.xml" }) public class SpringTest extends AbstractJUnit4SpringContextTests { public <T> T getBean(Class<T> type) { return applicationContext.getBean(type); } public Object getBean(String beanName) { return applicationContext.getBean(beanName); } protected ApplicationContext getContext() { return applicationContext; } }
本人补充:
若在静态类中需要引用只能使用如下方法:
public class TPlatformInfoTest extends TestBase{ private static MyHttpClient TPlatformInfoDispose; @BeforeClass public static void setUpBeforeClass(){ System.out.println("***********here init first***************"); TPlatformInfoDispose = new MyHttpClient("platform"); DataSourceContextHolder.setDbType("ds2"); ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:WEB-INF/rest-*.xml"); pfm = ctx.getBean(TPlatformInfoMapper.class); dim = ctx.getBean(TDeviceInfoMapper.class); }