快速业务通道

JUnit断言扩展 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

JUnit断言扩展

时间:2011-02-05 Tony Morris

JUnit 通过制作满足预期需求的断言来测试软件代码单元,但是这些断言只限于基本操作。IBM 软件工程师 Tony Morris 通过引入 JUnit 断言扩展(Assertion Extensions for JUnit)填补了这个空白,JUnit 断言扩展提供了一整套在 JUnit 框架中执行的复杂断言。下面请随作者的演示一道,了解如何使用这个来自 alphaWorks 的新包来提高 Java 软件的可靠性和健壮性。

流行的 JUnit 自动单元测试框架提供了通过制作满足预期需求的断言来测试软件代码单元的途径。然而,这些断言仅局限于基本操作,例如“断言两个变量相等”和“断言引用变量非 null”。基本的 JUnit 断言是有用的,但是它们无法给出在现实的软件单元测试场景中所需要的众多复杂的断言能力。

JUnit 断言扩展(Assertion Extensions for JUnit,JUnitX)是 JUnit 框架的一个扩展包,可以从 alphaWorks(请参阅 参考资料) 下载得到。它提供了很多常见的复杂断言的必要实现。不用为某个断言编写复杂的 JUnit 测试用例,可以调用一个 JUnitX 方法,制作来自同一上下文的断言 —— 而且不需要额外的设置。JUnitX 还声称它的功能与文档描述的一样,并包括了自己的 JUnit 自测套件。这再次保证了 JUnitX 会根据 JUnitX 文档来制作断言;如果某个单元测试失败,就可以知道是软件代码单元失败了,而不是 JUnitX 的测试实现报告了一个假失败。

JUnitX 会有用的一个典型场景包括 java.lang.Object 类的 equals(Object) 方法和 hashCode() 方法设置的合约。在开发的类中,通常要求遵守这些合约。用 JUnit 制作遵守合约的断言,就要求开发复杂的单元测试用例,而这么做很容易出错。相比之下,用 JUnitX 进行断言非常简单,就像创建一个返回类的实例的工厂实现并从单元测试用例中调用 JUnitX 的 assertEqualsContract 和 assertHashCodeContract 方法一样简单。

JUnitX 起步

有效使用 JUnitX 只需要一个最短的学习曲线,如果知道如何直接使用 JUnit 自动测试框架,那么将会发现使用 JUnitX 扩展包很容易。按照以下步骤即可起步:

如果还没有设置好运行 JUnit 测试用例的环境,请先设置好。可以参阅在“Automating the build and test process”中详细介绍的步骤(请参阅 参考资料)。

下载 JUnitX 包(请参阅 参考资料),把 JUnitX 文档解压到选定目录。

让执行 JUnit 测试的类装入器能够找到 lib/JUnitx.jar 文件。

现在可以调用 JUnitx.framework.Assert 类上的方法对功能进行断言了,调用的方式与在典型 JUnit 测试环境使用 JUnit.framework.Assert 类的方式类似。JUnitX 的在线 API 文档(请参阅 参考资料)提供了 JUnitx.framework.Assert 类上可以使用的方法调用的详细描述。

用例场景

假设现在要求实现一个代表人的类。Person 类要求有三个属性:title(称呼)、first name(名字)和 surname(姓)。title 属性是由可能值 MR、MS 和 MRS 组成的有限集合中的一个值,所以准备用 Typesafe Enumeration(类型安全的枚举)设计模式来实现一个 Title 类。图 1 中的 UML 图显示了这些需求目前的状态。

图 1.需求的 UML 图表

JUnit断言扩展 - 编程入门网

清单 1 显示了这些需求的源代码:

JUnit断言扩展(2)

时间:2011-02-05 Tony Morris

清单 1. 需要的类的源代码

public class Person {   private Title title;   private String firstName;   private String surName; } public class Title {   public static final Title MR = new Title();   public static final Title MS = new Title();   public static final Title MRS = new Title();   // private constructor to prevent

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号