前段日子很无聊,也是很无奈的。经过了这段日子的,我想了很多事情,虽然全部想通,但却努力的去想了。我想这样就Ok了
对吗?
好了。前阵子,老板请喝早茶,顺便跟我们这些技术人员讨论了怎么样可以提高我们内功的问题。我老板也是技术出身的。有相当多的经验,当然我最初的想法并不是去研究测试,我直接提出:“我觉得我们应该提高我们对设计模式的理解”。他却不怎么同意,说测试才是我们现在的当务之急,然后很肯定的说。TDD,重构都是建立再单元测试基础上的。并推翻了我的建议:”有空让对设计模式有深厚理解的员工给我们上课“。
开始由于我个人原因,或许我是个很情绪话的员工,也许在另外一家公司我可能早就被T。也许老板对我太好了。^_^
我当时不怎么响应,总是做自己喜欢做的事情,后来自己慢慢觉得自己的工作态度不对,所以昨天试着努力纠正自己的错误,真是在这样的环境下,自己写出了自己第一个我认为真正意义上的测试,把它记录下来。
测试的要求:
测试对一个Account的Dao操作以及Service。
java 代码
-
- package org.wuhua.dao;
-
- import java.util.Collection;
-
- public interface IBaseDao {
- Object save(Object o);
- void delete(Object o);
- Object update(Object o);
- Collection list();
- }
根据我的理解,测试的对方要跟mock的对象分开,(开始我一直认为你要mock的对象就是你要测试的东西,搞着搞着,我就很迷茫了。)。现在要做的就是看你IBaseDao的实现是什么了。如果实现是采用SpringHibernateTemplate的话你就去mock一个这样对象,不过此对象并不是接口,所以你要用到easymock的扩展包,以对它的支持。如果你实现的采用纯Hibernate的话。那你就去mock一个SessionFactory吧。很简单吧,难道这就是所谓的解耦吗?我想是的,这正是解耦。 哈哈
看下我的实现吧,采用Spring实现。
java 代码
- package org.wuhua.dao.impl;
-
- import java.util.Collection;
-
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import org.wuhua.dao.IBaseDao;
-
- public class BaseDao extends HibernateDaoSupport
- implements IBaseDao {
-
- public void delete(Object o) {
- this.getHibernateTemplate().delete(o);
- }
-
- public Collection list() {
-
- return null;
- }
-
- public Object save(Object o) {
- return this.getHibernateTemplate().save(o);
-
- }
-
- public Object update(Object o) {
- this.getHibernateTemplate().update(o);
- return o;
- }
-
- }
测试代码
java 代码
- package org.wuhua.dao;
-
- import java.io.Serializable;
-
- import junit.framework.TestCase;
-
- import org.easymock.MockControl;
- import org.easymock.classextension.MockClassControl;
- import org.springframework.orm.hibernate3.HibernateTemplate;
- import org.wuhua.dao.impl.BaseDao;
-
- public class BaseDaoTest extends TestCase {
-
- MockControl control;
-
- private HibernateTemplate ht;
-
- private BaseDao baseDao;
-
- protected void setUp() throws Exception {
- control = MockClassControl.createControl(HibernateTemplate.class);
- ht = (HibernateTemplate) control.getMock();
- baseDao = new BaseDao();
- baseDao.setHibernateTemplate(ht);
- }
-
- public void testSave() {
- Object o = new Object();
- ht.save(o);
- //这里我是有疑问的。
- //1,为什么HibernateTemplate返回的是Serializable。
- //2,设置的返回植为什么一定要跟调用ht.save(o)一致呢?
- control.setReturnValue(new Wuhua());
- control.replay();
- baseDao.save(o);
- control.verify();
- }
-
- public void testUpdate() {
- Object a = new Object();
- ht.update(a);
-
- control.replay();
- try {
- baseDao.update(a);
- fail("Not catch exception!");
- } catch(Exception e) {
-
- }
- control.verify();
- }
-
- class Wuhua implements Serializable {}
-
- }
上面就是我第一次很认真的测试,有很多不明白的地方
分享到:
- 2006-12-07 11:39
- 浏览 14660
- 评论(32)
- 论坛回复 / 浏览 (32 / 19456)
- 查看更多
相关推荐
第一款真正意义上的U盘扩容检测工具 集5大功能于一身:扩容检测、坏块扫描、速度测试、老化测试、坏块屏蔽 MyDiskTest是一款U盘/SD卡/CF卡等移动存储产品扩容识别工具。可以方便的检测出存储产品是否经过扩充容量,...
第一款真正意义上的U盘扩容检测工具 集5大功能于一身:扩容检测、坏块扫描、速度测试、老化测试、坏块屏蔽 MyDiskTest是一款U盘/SD卡/CF卡等移动存储产品扩容识别工具。可以方便的检测出存储产品是否经过扩充容量,...
大学英语综合教程第一册第一单元的测试,聚焦于一个核心议题:沟通中如何解读他人的真实意图。这个问题在我们的日常生活中无处不在,尤其是在人际交往的过程中,言语的真实含义往往隐藏在字里行间,容易造成误解。...
综上所述,冀教版五年级英语下册第一单元测试题精选不仅是对学生学习效果的检验,更是教师教学效果的反馈。通过对测试题目的深入剖析和理解,学生能够有效地找出自己学习的不足之处,而教师也能够根据学生的具体情况...
《小学一年级数学上册第八单元测试题精选.doc》这份文档便是这样一份指南,它以精选的方式,涵盖了学生这一学期所学的多个重要知识点,包括加减法基础、数字比较、数的构成、填空与应用、图形与实际问题、判断题和列...
2016年北师大版小学四年级上册数学第一单元的测试卷,作为基础数学知识的一个缩影,不仅反映了学生对数学基础知识的掌握程度,也是检验教学效果和学生学习成果的重要手段。本单元测试卷,作为学生学习数学的入门级...
这篇文档主要涉及的是初中政治(思想品德)第一单元的相关测试题,主要涵盖个人与社会的关系、社会责任、亲社会行为以及互联网的影响等知识点。 1. 个人与社会的关系:题目指出,人的成长离不开社会,投身社会的...
描述中提到“Silverlight做好的,有例子,长宽真正意义上完全自适应”,意味着这个插件是使用Silverlight技术开发的,并且具备响应式设计特性,可以自动调整其大小以适应不同设备或浏览器窗口的尺寸。这意味着无论...
人教部编版四年级下册道德与法治第一单元的测试题不仅涵盖了友谊、诚信、冲突处理等基本的社会交往技能,也深入到自我保护和校园欺凌等更为现实的问题,体现了教育者对学生全面发展的重视。 首先,测试题通过探讨...
等价类划分法的核心思想是将输入数据的可能取值范围划分为若干个互不相交的子集,这些子集在某种意义上是等效的,即从测试的角度来看,任何属于同一个等价类的数据都应该产生相同的输出结果。通过对这些等价类进行...
这个文件并非真正的恶意软件,而是一个被广泛接受的标准测试文件,用于验证杀毒软件能否正确识别已知的安全威胁。通过这种方式,用户可以方便地检查自己所使用的杀毒软件是否具备基础的防护能力。 ### 知识点四:...
第一章以一次创新的自我检测为开头,立即吸引了读者的注意力,激发了继续阅读的兴趣。这次自我检测不仅考验了逻辑思维、联想能力和角度转换,还暴露了个人在这些方面的潜在不足。通过对测试结果的反思,读者能够认识...
2018学年高二英语上学期第一次统测试题中为我们介绍了一组专为不同年龄段儿童设计的玩具:Railway Stephen、Monster Truck、Stacking Train和Crazy Forts,每一件都具有独特的教育意义和娱乐价值。 Railway Stephen...
第一款真正意义上的U盘扩容检测工具 集5大功能于一身:扩容检测、坏块扫描、速度测试、老化测试、坏块屏蔽 MyDiskTest是一款U盘/SD卡/CF卡等移动存储产品扩容识别工具。可以方便的检测出存储产品是否经过扩充容量,...
江苏省泰州市第二中学2020-2021学年高一上学期第一次调研测试的数学试题是对学生数学基础的一次全面考察。本次调研测试的试卷涵盖内容广泛,题目类型多样,考查了学生对于高中数学基础知识的理解和掌握程度,以及...
5. 1881年,古斯塔夫·特鲁夫展出的电动汽车是世界上第一辆真正意义的电动汽车,为三轮设计。 6. ABS是防抱死系统,防止紧急刹车时轮胎抱死。 【智能运输系统与环保燃料】 1. 代用燃料包括天然气、二甲醚、醇类...
人教新课标版的七年级语文上册第一单元同步测试2,就是一次对七年级学生语文学习情况的有效检验,涵盖了拼音、词汇、反义词、文学常识以及阅读理解等多个方面,是一份既全面又实用的学习资料。 首先,汉字拼音与...
在这一章节中,作者还着力纠正了人们在软件测试中的一些常见误区,例如,很多人可能错误地将软件测试等同于寻找bug的过程,实际上,测试的真正意义远不止于此。它还包含了预防性测试和质量保证等多个方面,旨在从多...
北师大版小学一年级数学教材是孩子们数学学习的起点,而第一单元“生活中的数”作为入门内容,对于培养孩子们的数学兴趣和思维能力至关重要。本次测试卷正是围绕这一单元的学习内容设计,通过一系列的练习,帮助孩子...
广东省深圳市高级中学2020届高三生物上学期第一次测试试题是一次全面检验学生对高中生物学知识点掌握程度的练习。本次测试试题覆盖面广,从基础的生物分类知识到复杂的遗传变异理论均有涉及,强调了学生对细胞生物学...