【第十三章】 测试 之 13.1 概述 13.2 单元测试 ——跟我学spring3
编程技术  /  houtizong 发布于 3年前   59
软件测试的目的首先是为了保证软件功能的正确性,其次是为了保证软件的质量,软件测试相当复杂,已经超出本书所涉及的范围,本节将只介绍软件测试流程中前两个步骤:单元测试和集成测试。
Spring提供了专门的测试模块用于简化单元测试和集成测试,单元测试和集成测试一般由程序员实现。
单元测试是最细粒度的测试,即具有原子性,通常测试的是某个功能(如测试类中的某个方法的功能)。
采用依赖注入后我们的代码对Spring IoC容器几乎没有任何依赖,因此在对我们代码进行测试时无需依赖Spring IoC容器,我们只需要通过简单的实例化对象、注入依赖然后测试相应方法来测试该方法是否完成我们预期的功能。
在本书中使用的传统开发流程,即先编写代码实现功能,然后再写测试来验证功能是否正确,而不是测试驱动开发,测试驱动开发是指在编写代码实现功能之前先写测试,然后再根据测试来写满足测试要求的功能代码,通过测试来驱动开发,如果对测试驱动开发感兴趣推荐阅读【测试驱动开发的艺术】。
在实际工作中,应该只对一些复杂的功能进行单元测试,对于一些简单的功能(如数据访问层的CRUD)没有必要花费时间进行单元测试。
Spring对单元测试提供如下支持:
JNDI测试支持:在org.springframework.mock.jndi包下通过了SimpleNamingContextBuilder来来创建JNDI上下文Mock对象,从而无需依赖特定Java EE容器即可完成JNDI测试。
web测试支持:在org.springframework.mock.web包中提供了一组Servlet API的Mock对象,从而可以无需Web容器即可测试web层的类。
反射工具类:在org.springframework.test.util包下的ReflectionTestUtils能通过反射完成类的非public字段或setter方法的调用;
JDBC工具类:在org.springframework.test.util包下的SimpleJdbcTestUtils能读取一个sql脚本文件并执行来简化SQL的执行,还提供了如清空表、统计表中行数的简便方法来简化测试代码的编写。
接下来让我们学习一下开发过程中各层代码如何编写测试用例。
1、Junit安装:将Junit 4包添加到“pointShop”项目中,具体方法请参照【2.2.3 Hello World】。
2、jMock安装:到jMock官网【http://www.jmock.org/】下载最新的jMock包,在本书中使用jMock2.5.1版本,将下载的“jmock-2.5.1-jars.zip ”包中的如下jar包拷贝到项目的lib目录下并添加到类路径:
objenesis-1.0.jar jmock-script-2.5.1.jar jmock-legacy-2.5.1.jar jmock-junit4-2.5.1.jar jmock-junit3-2.5.1.jar jmock-2.5.1.jar hamcrest-library-1.1.jar hamcrest-core-1.1.jar bsh-core-2.0b4.jar 请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介: 文章归档
文章标签 友情链接 |