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)
easymock+junit+spring学习·的更多相关文章
- Spring注解配置、Spring aop、整合Junit——Spring学习 day2
注解配置: 1.为主配置文件引入新的命名空间(约束) preference中引入文件 2.开启使用注解代理配置文件 <?xml version="1.0" encoding= ...
- 我的Spring学习记录(四)
虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...
- 我的Spring学习记录(五)
在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...
- spring学习(01)之IOC
spring学习(01)之IOC IOC:控制反转——Spring通过一种称作控制反转(IOC)的技术促进了低耦合.当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创 ...
- 不错的Spring学习笔记(转)
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- Spring 学习记录6 BeanFactory(2)
主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListabl ...
- spring 学习(五):spring 事务
spring 学习(五):spring 事务 事务概要 一个数据库事务通常包含了一个序列的对数据库的读/写操作.它的存在包含有以下两个目的: 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同 ...
- spring 学习(四): spring 的 jdbcTemplate 操作
spring 学习(四): spring 的 jdbcTemplate 操作 spring 针对 javaee 的每一层,都提供了相应的解决技术,jdbcTemplate 的主要操作在 dao 层. ...
- spring 学习(三):aop 学习
spring 学习(三):aop 学习 aop 概念 1 aop:面向切面(方面)编程,扩展功能不修改源代码实现 2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 3 aop底层使用动态代 ...
随机推荐
- 循序渐进Python3(八) -- 0 -- 初识socket
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...
- NIO vs. BIO
性能测试 BIO -- Blocking IO 即阻塞式IO NIO -- Non-Blocking IO, 即非阻塞式IO或异步IO 性能 -- 所谓的性能是指服务器响应客户端的能力,对于服务器我们 ...
- 今天研究一下SVN的分支和合并
关键字: trunk, branch, tag, merge 以前一直以为很难,没敢接触.今天晚上看了一下,也不过如此 用起来还是很简单的
- 反射——反射API,使用反射创建数组
反射API Java.lang.Reflect库 ① Class类与Java.lang.Reflect类库一起对反射的概念进行支持. ② java.lang包下: a) Cla ...
- linux命令(3):pwd命令
Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...
- 自动验证是ThinkPHP
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则 ...
- 嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化
一.内存管理基本知识 1.S3C2440最多会用到两级页表:以段的方式进行转换时只用到一级页表,以页的方式进行转换时用到两级页表.页的大小有三种:大页(64KB),小页(4KB),极小页(1KB).条 ...
- js-我理解的闭包
一:什么是闭包 <JS高级程序设计>指出:闭包是指有有权访问另一个函数作用域中变量的函数. 二:闭包的使用 闭包的常见的创建方式是 子函数嵌套在父函数的内部,这样,子函数就可以访问父函数中 ...
- jQuery scroll事件实现监控滚动条分页示例(转)
这篇文章主要介绍了jQuery scroll事件实现监控滚动条分页简单示例,使用ajax加载,同时介绍了(document).height()与$(window).height()的区别,需要的朋友可 ...
- nginx下开启pathinfo模式
第一种方式是通过重写url来实现pathinfo模式: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$ ...