Java:探索 JUnit 4.4 新特性
来源:互联网 发布:插画用什么软件 编辑:程序博客网 时间:2024/06/01 08:50
本文通过理论分析和详细例子向读者阐述 JUnit 4.4 所带来的最新特性,读者通过本文的学习,可以轻松掌握使用 JUnit 4.4 的新特性。
随着当前 Java 开发的越发成熟,Agile 和 TDD 的越发流行,自动化测试的呼声也越来越高。若想将单元测试变得自动化,自然 JUnit 这把利器必不可少,这也是 JUnit 自 1997 年诞生以来在 Java 开发业界一直相当流行的原因。
JUnit 是针对 Java 语言的一个单元测试框架,它被认为是迄今为止所开发的最重要的第三方 Java 库。 JUnit 的优点是整个测试过程无需人的参与,无需分析和判断最终测试结果是否正确,而且可以很容易地一次性运行多个测试。 JUnit 的出现促进了测试的盛行,它使得 Java 代码更健壮,更可靠,Bug 比以前更少。
JUnit 自从问世以来一直在不停的推出新版本,目前最新的版本是 2007 年 7 月发布的 JUnit 4.4,它是继 JUnit4 以来最大的发行版,提供了很多有用的新特性。本文将假设读者已经具有 JUnit 4 的使用经验。
JUnit 4.4 概述
JUnit 设计的目的就是有效地抓住编程人员写代码的意图,然后快速检查他们的代码是否与他们的意图相匹配。 JUnit 发展至今,版本不停的翻新,但是所有版本都一致致力于解决一个问题,那就是如何发现编程人员的代码意图,并且如何使得编程人员更加容易地表达他们的代码意图。JUnit 4.4 也是为了如何能够更好的达到这个目的而出现的。
JUnit 4.4 主要提供了以下三个大方面的新特性来更好的抓住编程人员的代码意图:
- 提供了新的断言语法(Assertion syntax)——
assertThat
- 提供了假设机制(Assumption)
- 提供了理论机制(Theory)
新的断言语法(Assertion syntax)—— assertThat
JUnit 4.4 学习 JMock,引入了 Hamcrest 匹配机制,使得程序员在编写单元测试的 assert
语句时,可以具有更强的可读性,而且也更加灵活。
Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符定义的规则,程序员可以更加精确的表达自己的测试思想,指定所想设定的测试条件。比如,有时候定义的测试数据范围太精确,往往是若干个固定的确定值,这时会导致测试非常脆弱,因为接下来的测试数据只要稍稍有变化,就可能导致测试失败(比如 assertEquals( x, 10 );
只能判断 x
是否等于 10
,如果 x
不等于 10
,测试失败);有时候指定的测试数据范围又不够太精确,这时有可能会造成某些本该会导致测试不通过的数据,仍然会通过接下来的测试,这样就会降低测试的价值。 Hamcrest 的出现,给程序员编写测试用例提供了一套规则和方法,使用其可以更加精确的表达程序员所期望的测试的行为。(具体 Hamcrest 的使用,请参阅 参考资料)
JUnit 4.4 结合 Hamcrest 提供了一个全新的断言语法——assertThat
。程序员可以只使用 assertThat
一个断言语句,结合 Hamcrest 提供的匹配符,就可以表达全部的测试思想。
assertThat
的基本语法如下:
清单 1 assertThat 基本语法
assertThat( [value], [matcher statement] );
value
是接下来想要测试的变量值;matcher statement
是使用 Hamcrest 匹配符来表达的对前面变量所期望的值的声明,如果value
值与matcher statement
所表达的期望值相符,则测试成功,否则测试失败。
assertThat 的优点
- 优点 1:以前 JUnit 提供了很多的 assertion 语句,如:
assertEquals
,assertNotSame
,assertFalse
,assertTrue
,assertNotNull
,assertNull
等,现在有了 JUnit 4.4,一条assertThat
即可以替代所有的 assertion 语句,这样可以在所有的单元测试中只使用一个断言方法,使得编写测试用例变得简单,代码风格变得统一,测试代码也更容易维护。 - 优点 2:
assertThat
使用了 Hamcrest 的 Matcher 匹配符,用户可以使用匹配符规定的匹配准则精确的指定一些想设定满足的条件,具有很强的易读性,而且使用起来更加灵活。如清单 2 所示:
清单 2 使用匹配符 Matcher 和不使用之间的比较
本文转自IBM Developerworks中国
请点击此处查看全文
- Java:探索 JUnit 4.4 新特性
- 探索 JUnit 4.4 新特性
- 探索 JUnit 4.4 新特性
- 探索 JUnit 4.4 新特性
- [置顶] 探索 JUnit 4.4 新特性
- JUnit 4.4 新特性
- Java JUnit 5 新特性
- JUnit 5 新特性
- JUnit 5 新特性
- Java单元测试工具JUnit 5新特性一览
- Java单元测试工具JUnit 5新特性一览
- java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)
- java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)
- java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)
- Junit 4新的特性
- 驾驭“野马”-- 探索Java SE 6的一些新特性
- JUnit 4.7的新特性:Rule
- 学习并体验 JUnit 5 新特性
- Mysql中count(*),DISTINCT的使用方法和效率研究
- Java技术:Eclipse的使用技巧详解
- DISTINCT,DISTINCTROW去除重复值
- VB中正则表达式的SubMatches、matches和MatchCollection的使用
- 解决一个正则表达式问题
- Java:探索 JUnit 4.4 新特性
- Python 技术专题
- 掌握 Dojo 工具包( 2):使用 Dojo 框架开发 Ajax 应用
- 在 IBM WebSphere Service Registry and Repository 中使用简单 XML 接口和 JMX管理 API分类加载
- 使用 Eclipse 在 Google App Engine 上创建 mashup,第 3 部分: 使用 RESTful Web 服务
- 使用 SAX 处理 XML 解析中的错误
- 探索 System p 上的 Red Hat Enterprise Linux 5
- 工厂模式
- 9.5经典书籍