TESTNG&&JUNIT4对比
特性或指标
|
TESTNG
|
JUINT4
|
1. 测试是否支持(Annotations)
|
YES
|
YES
|
2.框架依赖程度
|
不需要扩展特定的基类和实现特定的方法
|
不需要扩展特定的基类和实现特定的方法
|
3.灵活性
|
同样支持Before,After方法,TestNG更为灵活,支持各种签名方式,
如private,protected
同样也支持BeforeClass 和AfterClass,只执行一次的方法,但是可以不需要使用static签名
|
支持Before,After方法
支持BeforeClass 和AfterClass
|
4.依赖性测试
|
利用 Test 注释的 dependsOnMethods 属性来应对测试的依赖性问题。有了这个便利的特性,就可以轻松指定依赖方法。
|
难确定测试用例执行的顺序
|
5.失败和重运行
|
一旦 TestNG 中出现失败,它就会创建一个 XML 配置文件,对失败的测试加以说明。如果利用这个文件执行 TestNG 运行程序,TestNG 就只运行失败的测试。这样可以快速定位出错方法,并且节约大量的时间。
失败文件,一般命名为testng-failed.xml,以后只需要运行此文件就可以了。
|
如果测试套件包括 N 项测试,其中 M(M<=N) 项失败,很可能就会迫使您重新运行整个测试套件(修改错误以后)。这样的工作会耗费掉大量的时间。
|
6.参数化测试
|
TestNG 提供了开箱即用的类似特性。通过在 TestNG 的 XML 配置文件中放入参数化数据,就可以对不同的数据集重用同一个测试用例,甚至有可能会得到不同的结果。
支持@DataProvider 注释可以方便地把复杂参数类型映射到某个测试方法。
|
如果您想改变某个受测方法的参数组,就只能给每个 不同的参数组编写一个测试用例。多数情况下,这不会带来太多麻烦。出现大量的重复测试代码。
|
7.测试分组
|
支持
|
不支持
|
8.多线程测试
|
TestNG对多线程测试的支持良好,只需要配置即可。
|
JUnit中要想进行多线程测试比较麻烦,需要其它模块。
|
设计 JUnit 的目的是侧重点分析代码单元,而 TestNG 的预期用途则针对高级测试。
------君临天下,舍我其谁
------