easymock+junit+spring学习·
Easymock学习
Author:luojie
- 1. Easymock简介
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。
用于白盒测试,与预期结果不同,才去分析代码。
- 2. Easymock + junit 单元测试
EasyMock采用“记录-----回放”的工作模式,基本使用步骤:
* 创建Mock对象的控制对象Control。
* 从控制对象中获取所需要的Mock对象。
* 记录测试方法中所使用到的方法和返回值。
* 设置Control对象到“回放”模式。
* 进行测试。
* 在测试完毕后,确认Mock对象已经执行了刚才定义的所有操作。
public class TalkerController {
public Integer getResponseByWord(String word){
/*if(word=="我很生气!"){
return EmotionConstants.very_angry_emotion;
}
else if(word == "我有点生气"){
return EmotionConstants.normal_angry_emotion;
}
else if(word == "我心态平静"){
return EmotionConstants.normal_emotion;
}
else if(word == "我有点开心"){
return EmotionConstants.normal_happy_emotion;
}
else if(word == "我很开心"){
return EmotionConstants.very_happy_emotion;
}else{
return 0;
}*/
return 0;
}
easymock测试类初始化代码:
@Before
public void init(){
calMotion = new CalculateMotion();
talkerMock = EasyMock.createMock(TalkerController.class);
calMotion.setController(talkerMock);}
easymock测试类实现函数getResponseByWord代码:
@Test
public void calTest() throws Exception{
EasyMock.expect(talkerMock.getResponseByWord("我很生气!
")).andReturn(5);
EasyMock.expect(talkerMock.getResponseByWord("我很开心
")).andReturn(1);
EasyMock.replay(talkerMock);
Human a = new Human("我很生气!", 1);
Human b = new Human("我很开心", 1);
calMotion.getHumanList().add(a);
calMotion.getHumanList().add(b);
int total = calMotion.calculateAvgMotion();
System.out.println("total motion:"+total);
Assert.assertEquals(6, total);
}
- 3. easymock + spring + junit4
easymock测试类关键代码如图所示:
Junit4的测试套件:
@RunWith(Suite.class)
// 指定运行器
@Suite.SuiteClasses({ CalculatorTest.class, ParametersTest.class })
// 指定要测试的类
public class TestAll
{
}
@RunWith(Suite.class)
@SuiteClasses(TestAll.class)
// 除了指定类,也可以指定套件类
public class TestAll2
{
}
- 4. Junit主要语法
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:
* @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所 有方法执行一次)
* @After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所
有方法执行一次)
* @Test:测试方法,在这里可以测试期望异常和超时时间
* @Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
* @Ignore:忽略的测试方法
* @BeforeClass:针对所有测试,只执行一次,且必须为static void
* @AfterClass:针对所有测试,只执行一次,且必须为static void
* 一个JUnit4的单元测试用例执行顺序为:
* @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
* 每一个测试方法的调用顺序为:
* @Before -> @Test -> @After;
- 5. 参考网站:
http://jackyrong.iteye.com/blog/1934670(easymock快速入门教程)
http://blog.csdn.net/vking_wang/article/details/9170979(easymock基本语法)
http://blog.csdn.net/u010218617/article/details/10468441(easymock+spring)
http://blog.csdn.net/zhangxin09/article/details/42487319(junit+mockito)
转载于:https://www.cnblogs.com/hkxd-1/p/6044000.html
easymock+junit+spring学习·相关推荐
- spring学习笔记06-spring整合junit(出现的问题,解决的思路)
spring学习笔记06-spring整合junit(出现的问题,解决的思路) 文章目录 spring学习笔记06-spring整合junit(出现的问题,解决的思路) 3.1测试类中的问题和解决思路 ...
- Spring学习总结二
Spring框架的代理与AOP.AspectJ Spring学习总结二 0.在理解什么是AOP之前的一些话 1.什么是AOP 2.AOP的重要概念 3.代理模式 3.1.静态代理 3.2.动态代理 3 ...
- Spring学习总结一
Spring框架IoC与DI思想及应用 Spring学习总结一 1.Spring是什么 2.Spring的优点 2.1.关键概念 2.2.Spring的优点 3.Spring的架构图 3.1.核心容器 ...
- Spring学习(一)初识Spring
本文借鉴:Spring学习(特此感谢!) 一.简介 什么是Spring 定义:Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,目的为了简化java开发. DI:注入 IOC ...
- 【spring学习】03
[spring学习]03 Spring注解开发 spring集成junit Spring注解开发 spring集成junit
- 【spring学习】02
[spring学习]02 spring快速入门 实例 Spring配置文件 Bean标签的基本配置 Bean标签的范围配置 Spring 依赖注入 Spring引入其他配置文件 spring配置文件总 ...
- Spring 学习笔记----->AOP
Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...
- Spring学习中使用javaConfig进行配置时出现 has not been refreshed yet错误
Spring学习中使用javaConfig进行配置时出现 has not been refreshed yet错误 java.lang.IllegalStateException: org.sprin ...
- Spring学习第6篇: 基于注解使用IOC
大家家好,我是一名网络怪咖,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知Spring重要性,现在普遍都使用SpringBoot来开发,面试的时候SpringBoot原理也 ...
- Spring——Spring学习教程(详细)(上篇)——IOC、AOP
本文是Spring的学习上篇,主要讲IOC和AOP. Spring的JDBCTemplete以及事务的知识,请见下篇. Spring--Spring学习教程(详细)(下篇)--JDBCTemplete ...
最新文章
- 如何使用 Python 或 Bash动态生成 Jekyll 配置文件
- Java 8 类型转换及改进
- iOS 新窗口在最上层
- 《疯狂Java讲义》8
- 2招按摩轻松解除黑眼圈 - 健康程序员,至尚生活!
- 五分钟快速理解 Reactor 模型
- [2011山东ACM省赛] Identifiers(模拟)
- 计算机科技与技术对应岗位,计算机技术与软件专业技术资格名称及岗位基本任职条件...
- 深入剖析:Super Jumping! Jumping! Jumping! (动规)
- 字符串的索引 切片 步长 反步长 , 字符串的常用方法 格式化输出
- api 读内存整数_10万+QPS 真的只是因为单线程和基于内存?
- System.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of 1628
- 半导体——本征半导体、杂质半导体、PN结
- 毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介
- 三电极体系电化学测量模组
- [作业]习题2-2 韩信点兵(hanxin)
- 【省选模拟】西行(FWT)
- 决策树算法的 MATLAB 实践
- 本题计算人体的 BMI BMI =体重÷身高的平方
- Android 悬浮按钮的简单实现
热门文章
- 新年新起点-荣获2011年度Silverlight方向Microsoft® MVP奖
- 用Java操作Office 2007
- 驗證類javascript
- MyEclipse—如何在MyEclipse中创建servlet3.0
- 最严格的身份证校验(Java版)
- SpringBoot 整合 liquibase
- mysql创建有参数的函数,7-3:MySQL 创建不带参数的自定义函数
- 谁设计python_如果你有设计师朋友,请对TA好一些...
- redis数据类型-字符串
- .net session 有效时间_【面试题】|干货!.NET C# 简答题Part 07