快速业务通道

追求代码质量 - JUnit 4与TestNG的对比 - 编程入门网

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

追求代码质量 - JUnit 4与TestNG的对比

时间:2010-12-11 IBM Andrew Glover

经过长时间积极的开发之后,JUnit 4.0 于今年年初发布了。JUnit 框架的 某些最有趣的更改 —— 特别是对于本专栏的读者来说 —— 正是通过巧妙地使用注释实现的。除外观和风格方面的显著改 进外,新框架的特性使测试用例的编制从结构规则中解放出来。使原来僵化的 fixture 模型更为灵活,有利于采取可配置程度更高的方法。因此,JUnit 框架 不再强求把每一项测试工作定义为一个名称以 test 开始的方法,并且现在可以 只运行一次 fixture,而不是每次测试都需要运行一次。

虽然这些改变 令人欣慰,但 JUnit 4 并不是第一个提供基于注释的灵活模型的 Java™ 测试框架。在修改 JUnit 之前很久,TestNG 就已建立为一个基于注释的框架。

事实上,是 TestNG 在 Java 编程中率先 实现了利用注释进行测试,这 使它成为 JUnit 的有力竞争对手。然而,自从 JUnit 4 发布后,很多开发者质 疑:二者之间还有什么差别吗?在本月的专栏中,我将讨论 TestNG 不同于 JUnit 4 的一些特性,并提议采用一些方法,使得这两个框架能继续互相补充, 而不是互相竞争。

您知道吗?

在 Ant 中运行 JUnit 4 测试比预计的要难得多。事实上 ,一些团队已发现,惟一的解决方法是升级到 Ant 1.7。

表面上的相似

JUnit 4 和 TestNG 有一些共同的重要特性。这两个框架都让测试工作 简单得令人吃惊(和愉快),给测试工作带来了便利。二者也都拥有活跃的社区 ,为主动开发提供支持,同时生成丰富的文档。

两个框架的不同在于核 心设计。JUnit 一直 是一个单元测试框架,也就是说,其构建目的是促进单个 对象的测试,它确实能够极其有效地完成此类任务。而 TestNG 则是用来解决更 高 级别的测试问题,因此,它具有 JUnit 中所没有的一些特性。

一个简单的测试用例

初看起来,JUnit 4 和 TestNG 中实现的测试非常相似。为了更好地理解我 的意思,请看一下清单 1 中的代码。这是一个 JUnit 4 测试,它有一个 macro-fixture(即仅在所有测试运行前调用一次的 fixture),这个 macro- fixture 由 @BeforeClass 属性表示:

清单 1. 一个简单的 JUnit 4 测试用例

package test.com.acme.dona.dep; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.junit.BeforeClass; import org.junit.Test; public class DependencyFinderTest {   private static DependencyFinder finder;   @BeforeClass   public static void init() throws Exception {   finder = new DependencyFinder();   }   @Test   public void verifyDependencies()   throws Exception {    String targetClss =     "test.com.acme.dona.dep.DependencyFind";    Filter[] filtr = new Filter[] {     new RegexPackageFilter("java|junit|org")};    Dependency[] deps =     finder.findDependencies(targetClss, filtr);    assertNotNull("deps was null", deps);    assertEquals("should be 5 large", 5, deps.length);   } }

JUnit 用户会立即注意到:这个类中没有了以前版本的 JUnit 中所要求的一 些语法成分。这个类没有 setUp() 方法,也不对 TestCase 类进行扩展,甚至 也没有哪个方法的名称以 test 开始。这个类还利用了 Java 5 的一些特性,例 如静态导入,很明显地,它还使用了注释。

追求代码质量 - JUnit 4与TestNG的对比(2)

时间:2010-12-11 IBM Andrew Glover

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号