专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » junit:JUnit 断言扩展 »正文

junit:JUnit 断言扩展

来源: 发布时间:星期四, 2009年1月8日 浏览:17次 评论:0
  JUnit 通过制作满足预期需求断言来测试软件Software代码单元但是这些断言只限于基本操作IBM 软件Software工程师 Tony Morris 通过引入 JUnit 断言扩展(Assertion Extensions for JUnit)填补了这个空白JUnit 断言扩展提供了整套在 JUnit 框架中执行复杂断言下面请随作者演示了解如何使用这个来自 alphaWorks 新包来提高 Java 软件Software可靠性和健壮性

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

  JUnit 断言扩展(Assertion Extensions for JUnitJUnitX)是 JUnit 框架个扩展包可以从 alphaWorks(请参阅 参考资料) 下载得到它提供了很多常见复杂断言必要实现不用为某个断言编写复杂 JUnit 测试用例可以个 JUnitX 思路方法制作来自同上下文断言 —— 而且不需要额外设置JUnitX 还声称它功能和文档描述并包括了自己 JUnit 自测套件这再次保证了 JUnitX 会根据 JUnitX 文档来制作断言;如果某个单元测试失败就可以知道是软件Software代码单元失败了而不是 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 类要求有 3个属性:title(称呼)、first name(名字)和 surname(姓)title 属性是由可能值 MR、MS 和 MRS 组成有限集合中个值所以准备用 Typesafe Enumeration(类型安全枚举)设计模式来实现个 Title 类图 1 中 UML 图显示了这些需求目前状态

  图 1.需求 UML 图表

Title{MR, MS, MRS};
 private Title {
 }
 // Ensure that the same instance is ed when deserialized.
 Object readResolve {
   VALUES[index];
 }
}



  如果运行清单 3 中 JUnit 测试用例测试会通过这样就可以得出结论:代码满足了指定需求

  结束语

  如果想不用 JUnitX 在代码用例场景上进行断言就会有多得多工作要做个测试用例失败很可能表示个构造不当测试用例而不是软件Software代码单元有误这可能要费更多时间来诊断如果 JUnitX 测试用例失败了而软件Software代码单元中又不是十分明显那么可以阅读自测试套件中包含源代码以了解通过测试用例代码单元看起来是什么样



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: