`

用Spring2.5+JUnit4进行单元测试

阅读更多

摘要
Spring2.5为测试提供了全新的TestContext Framework,在Spring2.5中可以利用注解编写测试用例,本文不会讨论TestContext Framework的信息,仅以一个实际例子来说明如何编写测试用例。

关键字:Spring2.5,Unit Test,JUnit4.4;


内容:
要创建一个基于Spring2.5的JUnit4.4测试用例其实相当简单,主要进行以下几步的工作:
(1)创建一个扩展自AbstractTransactionalJUnit4SpringContextTests的类,该基类是Spring2.5为方便在JUnit4环境进行事务测试的类,它还提供了一个simpleJdbcTemplate属性让你可以方便地操控数据库表,便于对测试数据进行有效的操作;
(2)用@ContextLocation注解指定你要加载的Spring配置信息所在的位置;(默认的加载文件信息请参阅Spring Documentation);
(3)用@Autowired或@Resource注解注入你的Service接口,@Autowrired是指按类型将Spring Bean注入;而@Resource则按名称将Spring Bean注入。
(4)用@Before准备待测试的数据,如果我们的数据库表结构没有任何数据,则可以在这里预先插入记录,以便进行单元测试,当整个测试完成后,这些数据都不会被保留在数据库中。
(5)在需要进行测试的方法上使用JUnit4.4提供的@Test注解进行标示;

下面我们以一个例子来说明如何编写一个测试用例:
<1>示例信息
假设我们有一个名为TrainProjectService的服务类需要进行单元测试,该Service接口的方法如清单1-1所示:
清单1-1
public interface TrainProjectService {

    //根据ID获取培训项目信息
    public TrainProject getTrainProjectById(Integer trainProjectId);
    …
}

Spring配置信息如清单1-2所示:
清单1-2
/cn/com/suhao/test/train/conf/applicationContext-train-service.xml

<bean  id="trainProjectService" 
class="cn.com.suhao.test.train.service.impl.TrainProjectServiceImp">
       <property name="trainProjectDao" ref="trainProjectDao" />
</bean>


/cn/com/suhao/test/train/conf/applicationContext-train-dao.xml

<bean  id="trainProjectDao"
class="cn.com.suhao.test.train.dao.impl.TrainProjectDAOImp" parent="parentDao" />


<2>测试用例
@ContextConfiguration(locations={"/cn/com/suhao/test/appconf/applicationContext.xml", 
         "/cn/com/suhao/test/train/conf/applicationContext-*.xml"
        }
)
public class TestTrainProjectService extends AbstractTransactionalJUnit4SpringContextTests {

    @Autowired
    private TrainProjectService trainProjectService;
    private Integer projectId;
    
    @Before
    public void prepareTestData() {
        final String  sql = "insert into train_project(project_name, project_attendee) values('English Test', 'Mike')";
        KeyHolder keyHolder = new GeneratedKeyHolder();
        simpleJdbcTemplate.getJdbcOperations().update(
            new PreparedStatementCreator() {
                public PreparedStatement createPreparedStatement(Connection conn)
                    throws SQLException {
                    PreparedStatement ps = conn.prepareStatement(sql);
                    return ps;
                }
            }, keyHolder);
        projectId = keyHolder.getKey().intValue();
    }
    
    @Test
    public void testGetTrainProject() {
        TrainProject trainProject = trainProjectService.getTrainProjectById(projectId);
        Assert.notNull(trainProject);
    }
    
    }

分享到:
评论

相关推荐

    Junit4+Spring2.5单元测试代码示例(也适用注解测试)

    Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)

    SSI框架实现增删改查(spring2.5 + struts2.1 + ibatis2.3)

    利用spring2.5 + ibatis 2.3 + struts2.1实现三个框架的整合,功能包括增、删、改、查以及存储过程的处理,同时加进了Junit测试框架。

    ssi框架集成增删改查及存储过程(spring2.5+struts2.1+ibatis2.3)

    利用ssi框架集成增删改查及存储过程处理,利用Junit测试框架进行单元测试。非常全面的例子。

    spring2.5开发参考手册

    Spring2.5继续坚持了简化企业级应用开发,同时给复杂问题提供强大的、非侵入性解决方案的发展趋向,特别是为那些使用Java 5或更新版本java的开发人员提供了进一步简化而强大的新特性。这些新特性包括:注解驱动的...

    junit+hibernate3.2+spring2.5工程

    直接拷贝到eclipse的空间目录下,加入常见的jar包,和hibernate,junit,spring的包,就可以对其spring ,hibernate进行测试。

    spring-Test,Junit4 jar,和测试代码

    spring-Test,Junit4 jar,和测试代码

    Spring2.5的新特性

    driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加注解的方法上,在测试框架中支持Junit4,Spring XML命名...

    Struts2SpringUnitDemo单元测试

    Struts2 Spring 框架整合 单元测试 Action和Service http://blog.csdn.net/fansunion/

    使用Spring2.5TestContext测试框架

    本文内容包括: 概述直接使用JUnit测试Spring程序存在的不足一个需要测试的Spring服务类编写UserService的测试用例准备测试数据并检测运行结果SpringTestContext测试框架体系结构小结参考资料Spring2.5TestContext...

    SSH2项目(WeExam)源码

    WeExam=UML(Rose)+Struts2.1.8+Spring2.5+Hibernate3.5+Junit+Mysql 大量使用了Hibernate和Spring的注解 配置步骤: 安装Tomcat及Mysql后: 1、新建WeExam的数据库 2、修改src/jdbc.properties内的连接参数,及...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3 利用Spring在JSP页面输出...

    spring-framework-2.5.1类包

    driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加注解的方法上,在测试框架中支持Junit4,Spring XML命名...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3 利用Spring在JSP页面输出...

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 ...B.3.4 使用Gienah Testing在JUnit 4中进行测试 B.4 小结

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 ...B.3.4 使用Gienah Testing在JUnit 4中进行测试 B.4 小结

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3 利用Spring在JSP页面输出...

    Java测试新技术TestNG和高级概念.part1

    无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...

    Spring.3.x企业应用开发实战(完整版).part2

    16.7.1 对LoginController进行单元测试 16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体...

Global site tag (gtag.js) - Google Analytics