Spring集成Junit4单元测试

为什么要进行单元测试

我们在进行项目开发时,如果在开发过程中没有严谨的代码测试。那么我们项目在上线后就会很痛苦,痛苦在哪里呢?各种Bug的修改!

也就是说没有测试的代码,我们不能保证代码的质量。所以单元测试变得尤为重要。

Junit

Junit一款内置在eclipse中的单元测试工具,早起版本采用继承TestCase类实现单元测试。Junit4可采用注解方式实现单元测试代码。

项目中导入Junit4

junit4lib

使用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等项目构建工具来打包部署项目。

 

 

 

来源: 雨林博客(www.yl-blog.com)