关于选择JUnit还是选testNG,这几篇文章,建议读一读:

API参考文档:

Junit API文档:http://junit.org/junit4/javadoc/latest/index.html

testng 6.11:http://www.javadoc.io/doc/org.testng/testng/6.11

testng documentation:http://testng.org/doc/documentation-main.html

两个框架的对比:

JUnit 4 与 TestNG 的对比:https://www.ibm.com/developerworks/cn/java/j-cq08296/index.html

JUnit vs TestNG: Which Testing Framework Should You Choose?:http://blog.takipi.com/junit-vs-testng-which-testing-framework-should-you-choose/

Java测试框架比较:TestNG VS JUnit 4:http://blog.csdn.net/jmyue/article/details/9041357
JUnit 4 与 TestNG 对比:http://www.importnew.com/16270.html

.....................

TestNG和JUnit是针对Java语言的两个比较常用的测试框架。JUnit出现的比较早,但是早期的JUnit 3对测试代码有非常多的限制,使用起来很不方便,后来的JUnit 4得到很大的改进。TestNG的出现介于JUnit 3和JUnit 4,但是TestNG在很多方面还要优于JUnit 4。下面从整体上对TestNG和JUnit 4进行比较全面的比较。

TestNG与JUnit的相同点:

1. 使用annotation,且大部分annotation相同。

2. 都可以进行单元测试(Unit test)。

3. 都是针对Java测试的工具。

TestNG与JUnit的不同点:

1. JUnit只能进行单元测试,TestNG可以进行单元测试,功能测试,端到端测试,集成测试等。

2. TestNG需要一个额外的xml配置文件,配置测试的class、method甚至package。

3. TestNG的运行方式更加灵活:命令行、ant和IDE,JUnit只能使用IDE。

4. TestNG的annotation更加丰富,比如@ExpectedExceptions、@DataProvider等。

5. 测试套件运行失败,JUnit 4会重新运行整个测试套件。TestNG运行失败时,会创建一个XML文件说明失败的测试,利用这个文件执行程序,就不会重复运行已经成功的测试。

TestNG比JUnit 4灵活性的体现:

1. JUnit 4中必须把@BeforeClass修饰的方法声明为public static,这就限制了该方法中使用的变量必须是static。而TestNG中@BeforeClass修饰的方法可以跟普通函数完全一样。

2. JUnit 4测试的依赖性非常强,测试用例间有严格的先后顺序。前一个测试不成功,后续所有的依赖测试都会失败。TestNG 利用@Test 的dependsOnMethods属性来应对测试依赖性问题。某方法依赖的方法失败,它将被跳过,而不是标记为失败。

3. 对于n个不同参数组合的测试,JUnit 4要写n个测试用例。每个测试用例完成的任务基本是相同的,只是受测方法的参数有所改变。TestNG的参数化测试只需要一个测试用例,然后把所需要的参数加到TestNG的xml配置文件中。这样的好处是参数与测试代码分离,非程序员也可以修改参数,同时修改无需重新编译测试代码。

4. 为了测试无法用String或原语值表示的复杂参数化类型,TestNG提供的@DataProvider使它们映射到某个测试方法。

5. JUnit 4的测试结果通过Green/Red bar体现,TestNG的结果除了Green/Red bar,还有Console窗口和test-output文件夹,对测试结果的描述更加详细,方便定位错误。

Junit 4 和 TestNG 在注解方面的实现非常相似。

特性 JUnit 4 TestNG
测试注解 @Test @Test
测试套件在执行之前需要执行的 @BeforeSuite
测试套件在执行之后需要执行的 @AfterSuite
在测试之前需要执行的 @BeforeTest
在测试之后需要执行的 @AfterTest
在一个测试方法所属于的任意一个组的第一个方法被调用之前执行 @BeforeGroups
在一个测试方法所属于的任意一个组的最后一个方法被调用之后执行 @AfterGroups
在当前类的第一个测试方法调用之前执行 @BeforeClass @BeforeClass
在当前类的最后一个测试方法调用之后执行 @AfterClass @AfterClass
每个测试方法之前需要执行 @Before @BeforeMethod
每个测试方法之后需要执行 @After @AfterMethod
忽略 @ignore @Test(enbale=false)
预期异常 @Test(expected = ArithmeticException.class) @Test(expectedExceptions = ArithmeticException.class)
超时 @Test(timeout = 1000) @Test(timeout = 1000)

(注:表格摘自http://www.importnew.com/16270.html)

待补充...

关于testNG和JUnit的对比相关推荐

  1. TestNG或JUnit

    多年以来,无论何时使用Java代码进行单元测试,我始终会回到TestNG. 每当我拿起TestNG时,人们都问我为什么要继续使用TestNG,尤其是默认开发环境(例如Eclipse或Maven)提供的 ...

  2. 新一代(New Generation)测试框架TestNG

    好文收藏: TestNG在eclipse中的使用:http://www.ibm.com/developerworks/cn/java/j-test-ng/ TestNG与Junit的对比:http:/ ...

  3. 接口测试自动化的思考与总结

    目录 前言 服务端接口测试介绍 什么是服务端? 什么是接口? 什么是接口测试? 为什么要做接口测试? 如何做接口测试? 接口测试自动化介绍 什么是接口测试自动化? 为什么要做接口测试自动化? 接口测试 ...

  4. 关于接口测试自动化的总结与思考

    序 近期看到阿里云性能测试 PTS 接口测试开启免费公测,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家一起讨论和分享,内容包括但不仅限于: 服务 ...

  5. 关于关于接口测试自动化的总结与思考接口测试自动化的总结与思考

    [文章末尾给大家留下了大量的福利] 简介: 对于接口自动化测试,从用例设计到测试脚本实现,总结起来,需要我们具备如下思想:模块化思想.数据驱动思想.关键字驱动思想 作者:予慕 序   近期看到阿里云性 ...

  6. ju 单元测试_junit4单元测试

    java中Junit单元测试 Junit元测试 单元测试(junit testing),是指对软件中的最小可测试单元进行检查和验证.Java里单元指一个类. JUnit ,是一个开源的Java单元测试 ...

  7. 什么是接口自动化?为什么要做?和怎么做接口自动化?

    目录 1.服务端接口测试介绍 什么是服务端? 2.什么是接口? 3.什么是接口测试? 4.为什么要做接口测试? 5.如何做接口测试? 6.接口测试自动化介绍 什么是接口测试自动化? 7.为什么要做接口 ...

  8. JUnit与TestNG:您应该选择哪种测试框架?

    JUnit与TestNG:测试框架对决 在平衡良好的开发人员团队中,测试是软件发布周期中不可分割的一部分. 并非总是那样. 单元测试,集成测试,系统测试等并不总是存在的. 如今,我们很幸运能及时到达一 ...

  9. testng执行参数_初识TestNG测试框架

    testkuaibao|软件测试自学公众号 公众号文章的推送机制改变.又由于我们公众号是不定时更新的,所以会导致很多小伙伴不能及时的收到我们的文章.大家可以把我们的公众号设置为星标,或者看完文章点个在 ...

  10. WebDriver·TestNg学习日志(Java/Ruby/.Net版)

    目录 WebDriver(JAVA)拾级而上 WebDriver拾级而上·之零 WebDriver理论 WebDriver拾级而上·之一 环境部署 WebDriver拾级而上·之二 浏览器操作 Web ...

最新文章

  1. linux 网络有关的5个命令
  2. Android FrameWork浅识
  3. 什么是GSD文件以及如何在STEP7和TIA博途中安装GSD文件?
  4. tidb-analyze
  5. linux ps1 日期格式,Linux下bash的PS1
  6. python买卖股票_python买卖股票的最佳时机(基于贪心_蛮力算法)
  7. 李智慧 - 架构师训练营 第六周
  8. 学生党无线蓝牙耳机推荐哪个,2022口碑最好的蓝牙耳机推荐
  9. 众创空间和共享办公室有什么不同吗
  10. pic18f66k80_boot 与 led (hex)
  11. UE4资源热更打包工具HotPatcher
  12. 反激式开关电源技术归纳(上)
  13. 计算机专业大学综合实力排名2015,2015年世界计算机专业大学排行榜
  14. 怎么样给小孩取名字?准爸妈为孩子起名字的另类姿势
  15. 计算机与信息工程专业就业前景,信息工程专业本科就业前景
  16. Java——ArrayList(动态数组)介绍
  17. Excel表格下载模板(带下拉框选项)
  18. Android 实现视屏播放器、边播边缓存功能,附源码
  19. 百惠送货单管理系统2.63 官方版
  20. 简单毛概刷题网页制作 2.0(拖欠近一年版)

热门文章

  1. 性能测试指标:吞吐量,qps,并发量,响应时间
  2. mac安装mysql mysql命令找不到_Mac系统下安装mysql数据库和使用phpMyAdmin可视化
  3. url的地址循环怎么写_电子邮件地址怎么写
  4. FR模板参数在SQL中或单元格过滤的写法
  5. 网络摄像头ip php,C#实现IP摄像头的方法
  6. python实现异步的原理_一篇文章理解Python异步编程的基本原理
  7. 设计模式学习02:简单工厂模式、工厂模式以及抽象工厂模式(具体)
  8. JEESZ-Zookeeper集群安装
  9. React动画实现原理
  10. .Net: C#中的委托(Delegate)和事件(Event)