五、Spring ——单元测试
1、JUnit4
JUnit测试用例的完整生命周期要经历一下阶段:类级初始化资源处理,方法级初始化资源处理、执行测试用例中的方法、方法级销毁资源处理、类级销毁资源处理。
- 测试方法 @Test
 - 初始化 @BeforeClass、@AfterClass和@Before、@After
 - 异常测试 @Test(expected=NullPointerException.class)
 - 超时测试 @Test(timeout=10)
 - assertThat 断言
 
2、模拟利器Mockito
创建Mock对象
//对接口进行模拟
UserService mockUserService = mock(UserService.class);
//对类进行模拟
UserServiceImpl mockUserServiceImpl = mock(UserServiceImpl.class);
//基于注解的模拟@Mock
User mockUser; @Before
public void initMocks(){
//初始化当前测试类所有@Mock注解模拟对象
MockitoAnnotations.initMocks(this);
}设定Mock对象的期望行为及返回值
//模拟方法设定返回值when(mockUserService.findUserByUserName("tom").thenReturn(new User("tom", "1234"));
doReturn(true).when(mockServiceImpl).hasMatchUser("tom","1234");
3、测试整合之王 Unitils
Unitils构建在DBUnit与EasyMock项目之上并与JUnit和TestNG相结合,支持数据库测试,支持利用Mock进行测试并提供Spring和Hibernate相集成。Unitils设计成以一种高度可配置和松耦合的方式来添加这些服务到单元测试中。
4、 单元测试实际运用
对DAO层的测试,结合Untils、DbUnit框架,编写一个支持Excel格式的数据集工厂类,实现使用Excel准备测试所需要的数据及验证数据,从而大大减少测试DAO层工作量。
对Service层的测试,采用Junit+Unitils+Mockito组合,运用Mockito强大的模块能力,完成对service层独立性测试,也可以用JUnit+Unitils+Dbunit组合,运用Dbunit强大的数据库维护能力,完成Service层+DAO层集成测试。
对Web层的测试,既可以采用JUnit+Unitils+Spring Mock组合,运用Spring Mock模拟依赖于容器的接口实例,如HttpServletRequest、ServletContext等,完成Web层中控器独立性测试;也可以采用JUnit+Unitils+Spring RestTemplate,完成Web层集成测试;还可以采用JUnit+Selenium组合,来模拟真实用户的操作及跨浏览器兼容等测试。
五、Spring ——单元测试的更多相关文章
- Spring单元测试
		
1.基于AbstractDependencyInjectionSpringContextTests Spring的单元测试可以使用AbstractDependencyInjectionSpringCo ...
 - J2EE进阶(五)Spring在web.xml中的配置
		
J2EE进阶(五)Spring在web.xml中的配置 前言 在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制自动加载到容器中.在web ...
 - SSM_CRUD新手练习(7)Spring单元测试分页请求
		
好久没写这个系列博客了是因为本人去公司实习去了,公司用的是Spring+SpingMvc+Hibernate现在有时间了不管怎么样继续把这个项目写完. 因为机器的原因,我的环境变成了IDEA+orac ...
 - SSM搭建Spring单元测试环境
		
原文链接:https://jingyan.baidu.com/article/93f9803f5a97a4e0e46f55c8.html SSM搭建Spring单元测试环境
 - Spring Security 解析(五) —— Spring Security Oauth2 开发
		
Spring Security 解析(五) -- Spring Security Oauth2 开发 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决 ...
 - [Java面试五]Spring总结以及在面试中的一些问题.
		
1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控制权,交由Spri ...
 - Spring错误——Spring 单元测试——Test class should have exactly one public constructor
		
背景:Spring 构建单元测试 错误 java.lang.Exception: Test class should have exactly one public constructor at or ...
 - spring boot(十五)spring boot+thymeleaf+jpa增删改查示例
		
快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency> <groupId>org.springframework.b ...
 - 整合Spring+Struts2+Mybatis加spring单元测试等
		
前言 自己是在CentOS7的IntelliJ IDEA里开发的,里面中文输入法有问题经常用不了,所以这里用了很多chinglish,希望不要介意: 一:pom依赖 <?xml version= ...
 
随机推荐
- Apriori原理与实践
			
Apriori: 其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集.经典的关联规则数据挖掘算法Apriori 算法广泛应用于各种领域,通过对数据的关联性进行了分析和挖掘,挖掘出的这 ...
 - 在eclipse中导入weka(小白在路上)
			
第一步:新建一个java工程,new->javaproject,假设工程名为wekatest 第二步:导入weka.jar 第三步:src关联 导入后有许多的.class文件,直接双击打开是看不 ...
 - python之map、filter、reduce、lambda函数  转
			
python之map.filter.reduce.lambda函数 转 http://www.cnblogs.com/kaituorensheng/p/5300340.html 阅读目录 map ...
 - 导出Excel  有身份证时注意
			
if (this.GridView1.Rows.Count != 0) { HttpContext.Current.Response.Clear() ...
 - Java Integer的底层优化
			
看一个程序(腾讯题) public class showMain { public static void main(String[] args){ //Double i1=127.00,i2=127 ...
 - OC语言BLOCK和协议
			
OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似 ...
 - Grunt完成对LESS实时编译
			
安装 安装grunt需要先安装node.js. 之后需要借助npm来安装grunt-cli,在cmd中npm install -g grunt-cli.(测试grunt --version看是否正确显 ...
 - jquery ajax跨域请求webservice webconfig配置
			
<configuration> <system.web> <compilation debug="true" targetFramework=&quo ...
 - SSH框架构建微信公众帐号服务器小技巧
			
SSH框架构建微信公众帐号服务器小技巧 熟悉struts2和servlet的同学应该清楚,struts2的方法多样性弥补了servlet单一的doGet 和doPost方法.如果自己的公众账号服务器是 ...
 - Linux驱动之内存映射
			
本文参考了http://www.cnblogs.com/geneil/archive/2011/12/08/2281222.html.本文作为学习总结,将主要过程简要描述. 很多驱动实现某些功能都要通 ...