Spring集成Junit4单元测试
为什么要进行单元测试
我们在进行项目开发时,如果在开发过程中没有严谨的代码测试。那么我们项目在上线后就会很痛苦,痛苦在哪里呢?各种Bug的修改!
也就是说没有测试的代码,我们不能保证代码的质量。所以单元测试变得尤为重要。
Junit
Junit一款内置在eclipse中的单元测试工具,早起版本采用继承TestCase类实现单元测试。Junit4可采用注解方式实现单元测试代码。
项目中导入Junit4
使用Junit测试采用Spring构建的项目
因为Spring需要启动IOC容器后才能使用,特别是把数据库相关的配置集成在Spring中,必须启动Spring才能执行,因此我们不得不在测试代码中加入papapa的Spring启动代码,这些代码看起来其实多余了
我们来看看SpringTest这个神器,它可以让你减少测试代码,采用注解方式控制Spring的ioc容器的启动,减少测试代码。
不仅仅如此,我们还可以再Test类的成员变量中使用@Resource、@Autowired注解来注入对象
Spring Test单元测试代码
package test.dao;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.marker.mushroom.beans.Menu;
import org.marker.mushroom.dao.IMenuDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* 单元测试
* @author marker
* @version 1.0
* @blog www.yl-blog.com
* @weibo http://t.qq.com/wuweiit
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/config/spring/*.xml")
public class MenuDaoTest extends AbstractJUnit4SpringContextTests {
// 自动注入Dao对象
@Autowired IMenuDao menuDao;
@Test
public void test(){
Menu m = menuDao.findByName("文章管理");
Assert.assertNotNull("is null ", m);
}
}
注意:需要导入Spring-test-x.x.x.jar包,Spring的配置文件我这里放置于源代码的config/spring中,注意这里我是Web项目哦。
总结
Spring Test让单元测试变得简单,这样的测试代码很酷炫吧。这个项目已然成为了Spring不可或缺的工具,当然我们项目发布的时候,不用吧这个jar放到lib中,最好使用Ant或者Maven等项目构建工具来打包部署项目。