欢迎来到天天文库
浏览记录
ID:6053504
大小:70.91 KB
页数:11页
时间:2018-01-01
《追求代码质量 junit4与testng的对比》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、追求代码质量:JUnit4与TestNG的对比为什么TestNG框架依然是大规模测试的较好选择?AndrewGlover,总裁,StelligentIncorporated简介: JUnit4具有基于注释的新框架,它包含了TestNG一些最优异的特性。但这是否意味着JUnit4已经淘汰了TestNG?AndrewGlover探讨了这两种框架各自的独特之处,并阐述了TestNG独有的三种高级测试特性。查看本系列更多内容本文的标签: testng标记本文!发布日期: 2006年9月18日级别: 初级访问情况: 5734次浏览评论
2、: 0 (查看
3、 添加评论-登录)平均分(9个评分)为本文评分经过长时间积极的开发之后,JUnit4.0于今年年初发布了。JUnit框架的某些最有趣的更改——特别是对于本专栏的读者来说——正是通过巧妙地使用注释实现的。除外观和风格方面的显著改进外,新框架的特性使测试用例的编制从结构规则中解放出来。使原来僵化的fixture模型更为灵活,有利于采取可配置程度更高的方法。因此,JUnit框架不再强求把每一项测试工作定义为一个名称以test开始的方法,并且现在可以只运行一次fixture,而不是每次测试都需要运行一次。虽然这些改
4、变令人欣慰,但JUnit4并不是第一个提供基于注释的灵活模型的Java™测试框架。在修改JUnit之前很久,TestNG就已建立为一个基于注释的框架。事实上,是TestNG在Java编程中率先实现了利用注释进行测试,这使它成为JUnit的有力竞争对手。然而,自从JUnit4发布后,很多开发者质疑:二者之间还有什么差别吗?在本月的专栏中,我将讨论TestNG不同于JUnit4的一些特性,并提议采用一些方法,使得这两个框架能继续互相补充,而不是互相竞争。您知道吗?在Ant中运行JUnit4测试比预计的要难得多。事实上,一些团队已
5、发现,惟一的解决方法是升级到Ant1.7。表面上的相似JUnit4和TestNG有一些共同的重要特性。这两个框架都让测试工作简单得令人吃惊(和愉快),给测试工作带来了便利。二者也都拥有活跃的社区,为主动开发提供支持,同时生成丰富的文档。提高代码质量要找到您最迫切问题的答案,请不要错过Andrew的论坛。两个框架的不同在于核心设计。JUnit一直是一个单元测试框架,也就是说,其构建目的是促进单个对象的测试,它确实能够极其有效地完成此类任务。而TestNG则是用来解决更高级别的测试问题,因此,它具有JUnit中所没有的一些特性。
6、一个简单的测试用例初看起来,JUnit4和TestNG中实现的测试非常相似。为了更好地理解我的意思,请看一下清单1中的代码。这是一个JUnit4测试,它有一个macro-fixture(即仅在所有测试运行前调用一次的fixture),这个macro-fixture由@BeforeClass属性表示:清单1.一个简单的JUnit4测试用例packagetest.com.acme.dona.dep;importstaticorg.junit.Assert.assertEquals;importstaticorg.junit.As
7、sert.assertNotNull;importorg.junit.BeforeClass;importorg.junit.Test;publicclassDependencyFinderTest{privatestaticDependencyFinderfinder;@BeforeClasspublicstaticvoidinit()throwsException{finder=newDependencyFinder();}@TestpublicvoidverifyDependencies()throwsExceptio
8、n{StringtargetClss="test.com.acme.dona.dep.DependencyFind";Filter[]filtr=newFilter[]{newRegexPackageFilter("java
9、junit
10、org")};Dependency[]deps=finder.findDependencies(targetClss,filtr);assertNotNull("depswasnull",deps);assertEquals("shouldbe5large",5,deps.length);}
11、}JUnit用户会立即注意到:这个类中没有了以前版本的JUnit中所要求的一些语法成分。这个类没有setUp()方法,也不对TestCase类进行扩展,甚至也没有哪个方法的名称以test开始。这个类还利用了Java5的一些特性,例如静态导入,很明显地,它还使用了注释。更多的灵活性在清单2中
此文档下载收益归作者所有