Unitils教程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unitils教程

Unitils教程 单元测试应该很容易,直观....至少在理论上是这样的。 然而现实的项目通常跨越多个层次,有的是数据驱动有的使用中间件技术,比如EJB和Hibernate等等。 Unitils源于尝试更加务实的单元测试,它始于一套测试准则,并为了方便应用这些准则而开发了一个开源代码库。 本教程将通过一些实例向您展示如何在您的项目中使用Unitils。 断言应用 数据库测试 应用Spring测试 应用mock objects测试 应用EasyMock支持 Assertion utilities 断言应用 首先以断言的应用来开始我们的教程,Unitils 提供的断言是可以独立应用在核心模块里不依赖其他模块的部分,不需要配置只要加入jar包并加入到classpath 里就可以使用。 应用反射的断言 典型的单体测试一般都包含一个重要的组成部分:对比实际产生的结果和希望的结果是否一致的方法:断言方法(assertEquals)。Unitils为我们提供了一个非常实用的assertion方法,让我们用比较两个USER对象的实例(User包括id ,first name ,last name属性)来开始我们这一部分的介绍。 public class User { private long id; private String first; private String last; public User(long id, String first, String last) { this.id = id; this.first = first; this.last = last; } } User user1 = new User(1, John, Doe); User user2 = new User(1, John, Doe); assertEquals(user1, user2); 因为两个user包含相同的属性,所以你一定以为断言是成功的。但是事实恰恰相反,断言失败,因为user类没有覆写equals()方法,所以断言就用判断两个对象是否相等来来返回结果,换句话说就是采用了user1 == user2的结果,用两个对象的引用是否一致作为判断的依据。 假如你像下面这样重写equals方法, public boolean equals(Object object) { if (object instanceof User) { return id == ((User) object).id; } return false; } 也许通过判断两个USER的ID是否相等来判断这两个user是否相等在您的程序逻辑里是行得通的,但是在单体测试里未必是有意义的,因为判断两个user是否相等被简化成了user的id是否相等了。 User user1 = new User(1, John, Doe); User user2 = new User(1, Jane, Smith); assertEquals(user1, user2); 按照上面的代码逻辑,也许断言成功了,但是这是您期望的么?所以最好避免使用equals()方法来实现两个对象的比较(除非对象的属性都是基本类型)。对了,还有一个办法也许能够有效,那就是把对象的属性一个一个的比较。 User user1 = new User(1, John, Doe); User user2 = new User(1, John, Doe); assertEquals(user1.getId(), user2.getId()); assertEquals(user1.getFirst(), user2.getFirst()); assertEquals(user1.getLast(), user2.getLast()); Unitils其实为我们提供了非常简单的方法,一种采用反射的方法。使用ReflectionAssert.assertReflectionEquals方法,上面的代码可以重写如下: User user1 = new User(1, John, Doe); User user2 = new User(1, John, Doe); assertReflectionEquals(user1, user2); 这种断言采用反射机制,循环的比较两个对象的filed的值,比如上面的例子,它就是依次对比id,first,last的值是否相等。 如果某个filed本身就是object,那么断言会递归的依次比对这两个object的

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档