`

用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自带了)

    Structs2.0+Spring2.5+Ibatis整合例子

    本项目"Structs2.0+Spring2.5+Ibatis整合例子"就是这样一个示例,展示了如何将Struts2、Spring和iBatis这三个流行的技术栈整合在一起,以实现MVC(模型-视图-控制器)架构。以下将详细阐述这三个框架的核心功能以及...

    Struts1.2+Spring2.5+Hibernate3.2框架搭建(一)

    5. 测试和运行:通过JUnit进行单元测试,确保各层功能正常,然后部署应用,测试整个流程是否顺畅。 这个框架组合的优点在于,Struts处理用户请求,Spring管理业务逻辑和服务,Hibernate处理数据持久化,三者分工...

    Spring2.5 + JPA(Hibernate)实现

    7. **测试**:在开发过程中,使用如Hibernate Tools的逆向工程生成数据库脚本,以及使用JUnit和Mockito进行单元测试是常见的实践。 通过标签“源码”和“工具”,我们可以推断这个主题可能包含了实际的代码示例和...

    整合struts2+spring2.5+ibatis

    Struts2、Spring2.5和iBatis是Java Web开发中的三大框架,它们的整合使用可以帮助开发者构建高效、灵活的MVC(Model-View-Controller)架构的应用程序。Struts2作为表现层框架,提供了丰富的动作调度和结果处理;...

    Spring2.5+Structs2+Hibernate3.3框架例子

    这个"Spring2.5+Structs2+Hibernate3.3框架例子"是一个经典的组合,旨在帮助初学者理解这些框架如何协同工作,构建高效的企业级应用程序。 **Spring框架**:Spring 是一个全面的后端开发框架,它提供了依赖注入(DI...

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

    总的来说,这个项目展示了如何使用SSI框架进行Web开发,包括基本的CRUD操作和存储过程的使用,以及通过Junit进行测试保证代码质量。开发者可以通过这个例子学习到如何整合这些组件,理解它们在实际项目中的工作原理...

    Struts1.3+Spring2.5+Hibernate3手动整合

    6. **测试整合**: 编写JUnit测试用例,验证Action、Service、DAO三层是否能正常工作。 **常见问题及解决方案**: 1. **空指针异常**: 可能是由于Spring没有正确注入bean,检查配置文件中的bean声明和引用。 2. **...

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

    在这个项目中,使用的是Spring 2.5、Struts 2.1和iBatis 2.3版本,这些组件在2000年代末到2010年代初是非常流行的技术。 **Spring框架**: Spring是一个全面的企业级应用开发框架,提供依赖注入(Dependency ...

    搭建Struts1.2+Spring2.5+Hibernate3.2框架(Hibernate集成包)

    5. **测试**:通过编写JUnit测试用例或手动测试,验证SSH框架是否正确集成,功能是否正常。 SSH框架的集成提供了强大的开发能力,但同时也需要开发者具备一定的技术背景和经验。随着技术的发展,现代项目更多地转向...

    使用 Spring 2.5 TestContext 测试框架

    在Spring框架中,TestContext模块为开发者提供了强大的测试支持,特别是在Spring 2.5版本中,这个测试框架进一步增强了测试的便利性和可扩展性。它允许我们以声明式的方式配置和管理测试环境,包括bean的初始化、...

    junit+hibernate3.2+spring2.5工程

    在本工程中,我们可以看到如何设置Junit测试类,对Spring和Hibernate的集成功能进行验证。 2. Hibernate3.2:作为一款强大的对象关系映射(ORM)框架,Hibernate3.2简化了数据库操作,使得开发者可以使用Java对象而...

    Struts1 增删改查+分页

    - 使用模拟请求工具如JUnit、TestNG,或集成测试框架如Selenium,进行端到端的测试。 以上就是"Struts1 增删改查+分页"项目涉及的主要知识点,涵盖了Struts1框架的基本原理和核心功能。通过这个项目,开发者可以...

    Spring2.5-中文参考手册chm.zip

    8. **测试支持**:Spring 2.5提供了更完善的测试工具,如`@RunWith(SpringJUnit4ClassRunner.class)`和`@ContextConfiguration`注解,使得基于Spring的应用测试更加便捷。 9. **集成其他框架**:Spring 2.5加强了与...

    spring2.5常用包

    例如,@RunWith(SpringJUnit4ClassRunner.class) 注解可以启动 Spring 上下文,便于测试 Bean 间的协作。 9. **JMS(Java Message Service)支持**:Spring 2.5 支持消息驱动的应用,通过 JMSTemplate 和 Message...

    Spring2.5 中文文档 chm格式

    Spring2.5在这方面进行了优化,增强了对JSR-330标准的支持,如`@Inject`注解,使得依赖注入更加简单和标准化。 其次,Spring2.5在AOP(面向切面编程)方面也有所加强。AOP是Spring用于实现横切关注点,如日志、事务...

    spring junit

    标题中的“spring junit”指的是Spring框架与JUnit测试框架的结合使用。在Java开发中,单元测试是确保代码质量的重要步骤,而JUnit是最流行的Java单元测试框架。Spring框架提供了丰富的功能,包括依赖注入、AOP...

    spring2.5中文文档(PDF)

    7. **测试框架**:加强了对JUnit和Mockito等测试工具的集成,便于编写单元测试和集成测试。 8. **国际化支持**:通过`MessageSource`接口,Spring 2.5提供了强大的国际化支持,方便应用根据不同地区显示不同语言的...

    Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包

    5. **JUnit**:JUnit是Java语言的一个单元测试框架,帮助开发者编写和执行测试用例,确保代码的质量和稳定性。它是敏捷开发中不可或缺的一部分。 6. **读取Excel**:在Java中,通常使用Apache POI库来读取和写入...

    spring2.5需要的jar

    提供了更好的测试支持,包括`@RunWith(SpringJUnit4ClassRunner.class)`和`@ContextConfiguration`注解,使单元测试和集成测试更加方便。 在压缩包"spring2.5需要的jar"中,可能包含了一系列Spring框架的核心库,...

Global site tag (gtag.js) - Google Analytics