网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 开源技术 > JUnit > 轻松测试-学习如何简化测试外部资源  

轻松测试-学习如何简化测试外部资源

2006-02-08  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  我们将从构建简单的驼鹿监视软件开始示例各种场景下的测试驱动开发。

  鹿是鹿家族中的最大个的成员。目前世界上估计有2百万头。为了更好的统计,世界驼鹿组织让我们开发一个驼鹿监视软件,希望保护人员能够跟踪和记录他们见到的驼鹿。



本文假设读者已经熟悉java/ant/maven/classpath,而且至少写过一两个简单的junit测试。


Vanilla JUnit

首先编写Moose类:
package moose;
import java.util.Date;
public class Moose {
    private Date dateTimeObserved;
    private int age;
    
    public Moose(Date dateTimeObservedParam, int estimatedAge) {
        this.dateTimeObserved = dateTimeObservedParam;
        this.age = estimatedAge;

网管联盟bitsCN@com


    }
}

网管网www.bitscn.com

  虽然驼鹿最长可以生存25年,但大部分驼鹿在年青的时候就被捕杀,通常只活了2、3年。根据世界驼鹿组织报告,我们想知道某一年龄后的驼鹿数据,因此我们增加了isOlderThan(int)方法。
单元测试如下:
    public void testIsOlderThan() {

        Moose moose = new Moose(new Date(), MOOSE_AGE);
        
        assertTrue("Moose age "+ MOOSE_AGE +" should of been older than "+ TEST_AGE, moose.isOlderThan(TEST_AGE) );
    }
方法:
    boolean isOlderThan(int contenderAge) {
        return this.age >= contenderAge;
    }
  这是一个普通的junit测试用例,这种方式通常用在测试驱动的开发中。这种完全独立的方法一般是很少的;通常我们都需要一些代价昂贵的或比较难构建的外部资源。

使用伪对象和jMock

  观察驼鹿的最佳时间是在黎明和黄昏,跟其他动物的观察时间相似。WOM希望我们提供获取记录驼鹿被发现的时间的保护人员,这样就可以通过String getObserverName()来获取相应的驼鹿了。

网管bitscn_com


  不幸地是,保护人员的接口来自第三方接口PersonnelUnit,而这是个大家伙没有LDAP我们是无法构造的。

  为了测试getObserverName(),我们可以启动LDAP服务器,发送数据,运行测试用例,然后再关闭LDAP。但那将是集成测试,而不是单元测试了,对我们来说宁可多写些代码。因此,我们创建了一个包含我们需要方法的Ranger接口:
    public interface Ranger {
    
        String getName();  
    }
  这给我们第一个启发式的单元测试:用接口分离外部依赖。
  我们需要改变Moose的构造函数增加Ranger参数。于是变成:
    ... above as before...

    private Ranger observer;
    
    public Moose(   Date dateTimeObservedParam,
                    int estimatedAge,
                    Ranger observedBy)
网管联盟bitsCN_com

    {
        this.dateTimeObserved = dateTimeObservedParam;
        this.age = estimatedAge;
        this.observer = observedBy;
    }

    ... below as before ...
网管论坛bbs_bitsCN_com

网管联盟bitsCN@com

[1] [2] [3] 下一页  

中国网管论坛bbs.bitsCN.com


TAGs测试   外部   资源   简化   如何   学习   轻松   接口    
 上一篇:没有了   下一篇:JUnit学习笔记之NetBeans入门篇
相关文章列表
轻松测试-学习如何简化测试外部资源 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Spring+hibernate的单元测试Junit
2.用JUnit框架实现Java单元测试
3.JUnit学习笔记之NetBeans入门篇
4.Java标准单元测试库 JUnit 4 抢先看
5.JUnit实施
6.用 Jython 构建 JUnit 测试包
7.开源技术:JUnit常用断言方法
8.JBuilder2005单元测试之JUnit框架
9.关于Java单元测试中的伪对象介绍(图)
10.Java开源项目——突破JUnit的局限
最新推荐文章:
1.Java技术开源搜索引擎
2.名词解释 什么是JUnit?
3.BeanShell 在人工测试与管理中的应用
4.JForum 2.1.7 源程序编译草记
5.检测代码是否有Junit Test Class的小功能
6.轻松测试-学习如何简化测试外部资源
7.Spring+hibernate的单元测试Junit
8.看 JUnit 中Metedata的巧妙应用
9.用 Jython 构建 JUnit 测试包
10.JUnit实施
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的