JUnit4与TestNG对比
- - 编程语言 - ITeye博客最近构建自动化测试,用webdriver+ant+junit3,发现用例的运行顺序无法保证,具有相关性的功能只好写在一个用例中,网上资料说junit4可以控制用例执行顺序,还没实际操作过,今天发现一篇TestNG与Junit4对比的文章,对我们的自动化测试很有帮助,记录在此,以待后续研究. 原文链接:http://blog.sina.com.cn/s/blog_4592b96f0101gi73.html.
特性或指标 | TestNG | Junit4 | |
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中要想进行多线程测试比较麻烦,需要其它模块。 |