1.我们知道无论在J2SE还是android中都有junit测试,利用junit能够帮助方便测试代码。在之前的博客中我也写了一些J2SE的一些junit测试例子,今天对于Spring中junit小小的讨论一下。
这个Spring测试需要的jar包:
spring-test-3.2.0.RELEASE.jar
2.Spring和Junit的关系图
左边的采用传统的方式,即一般的J2SE的方式测试代码,这种情况会有些问题:
(1).每一个测试都要启动Spring,
(2).这种情况下,是测试代码管理Spring容器,而与Spring容器管理测试代码想背了。
或许还有其他的情况,因此应该采用右边的方式进行junit测试,同时也正验证了Spring框架图,为啥Test在最下面
3.简单的案例:
package cn.wwh.www.spring.bbb.test;
/**
*类的作用:
*
*
*@author 一叶扁舟
*@version 1.0
*@创建时间: 2014-9-21 下午03:22:26
*/
public class HelloWorld {
public void show() {
System.out.println("Hello World! This is my first Spring!");
}
}
测试案例:
package cn.wwh.www.spring.bbb.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
*类的作用:测试在Spring中写测试框架
*
*
*@author 一叶扁舟
*@version 1.0
*@创建时间: 2014-9-21 下午10:19:41
*/
//表示先启动Spring容器,把junit运行在Spring容器中
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class SpringtestTest {
//自动装配Spring容器
@Autowired
private BeanFactory factory;
@Test
public void testBeanFactory() throws Exception {
HelloWorld world = factory.getBean("helloWorld",HelloWorld.class);
world.show();
}
}
SpringtestTest-context.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloWorld" class="cn.wwh.www.spring.bbb.test.HelloWorld"/>
</beans>
注意:
(1).@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@Autowired
@Test
这些都是测试标签
(2).@ContextConfiguration去找配置文件,默认从当前路径去找
如果置文件名= 当前测试类名-context.xml,就可以在当前路径找.可以省略如上面的SpringtestTest-context.xml,测试类为:SpringtestTest.java
如果不是按照约定写的,测需要按照加载路径的格式写:
@ContextConfiguration("classpath:cn/wwh/www/spring/bbb/test/SpringtestTest-context.xml")