`
joerong666
  • 浏览: 420043 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

怎样选择Java测试框架 JUnit还是TestNG

阅读更多

自动测试成为你Java项目中的一部分了吗?你最爱的测试框架是什么哪?使用的又是哪一种标准
 
  本文的4名开发者将和你一起分享他们在自动测试领域中的观点和经验。当你的项目面临测试阶段的时候,希望这些观点能对你有所帮助。如果你也想要分享自己的观点,请回帖参与讨论。我们真挚的希望我们能够为这个领域中新手提供一些有用建议和标准。
 
  文章最后列出了文章的作者和提到的测试框架
 
  论自动测试——Tom Wheeler当我给那些有经验的开发者上课时,我发现只有40%左右的人写测试。大约还有40%的人甚至从来没听说过JUnit,这其中更有一般人完全没有单元测试的概念。开发者通常处于在项目经理制定的紧促计划的压力中——而那些项目经理同样处于客户的压力之下,客户希望他们的软件能够被快速的开发出。不幸的是,测试是项目中的一个重要部分而很多人却轻易的将它砍掉。真是目光短浅,那种做法只会让你的应用成为bug的乐园而且会大大超出你的计划时间。
 
  为什么会这样?因为写自动测试实际上省下了大量的运行时间。每个开发者都会出错而通过测试可以帮助找到这些错误。可能手工测试在某些方面要比自动测试更快一些,但是手工测试需要用户界面。手工测试的结果并不一致,因为测试者和开发者一样都会犯错。而一个自动测试总会保持结果的一致性。
 
  也许更重要的是,当一个旧bug被修复或者新特性被添加时会引入更多的bug.你需要在改变系统后重新运行所有的测试。这也是自动测试的价值体现,因为对比手工测试的开销,自动测试的开销是微不足道的。如果开发者经常测试,他们可以更容易地发现并修改问题,这可以保证代码质量并保证团队开发的进度。
 
  比较JUnit和TestNG——Meera Subbraro Martin Fowler曾说过,软件开发领域中此前从没有过这样的事情:很少几行代码对大量的代码起了如此重要的作用。JUnit过去直到如今依然是单元测试的一个标准。它是最流行的开源工具。当然现在我们有许多有别于JUnit的其他的开源工具。我自己,除了使用JUnit外,我还是用TestNG.下面我们来谈谈下这两个框架。
 
  JUnit和TestNG都使用Annotation,都使得测试简单有趣。如果你写两个测试类,一个使用JUnit一个使用TestNG,除非你看到它们import语句,否则你几乎看不到他们之间的差别。
 
  如果你是一个TDD的信徒,通过运行测试来完成你的持续集成过程。TestNG可能更加适合。重新运行失败的测试这样的机制对于每天都进行编译来说非常有帮助。而这个特性只有TestNG才有。
 
  TestNG的另一个亮点是支持参数化。在JUnit中如果你要测试不同的参数,你需要写不同的测试用例来覆盖不同参数。而在TestNG,通过使用xml配置文件做到。开发者可能会抱怨XML文件“这下好了,除了要维护那些测试用例,我还要维护那么一堆xml文件”。(译者按:JUnit4也已经支持参数化测试了)
 
  JUnit生成的HTML格式的报告非常好。我使用TestNG和Java 6,生成的报告远没有JUnit那么漂亮。
 
  最后,两个框架都有自己的长处和弱处,必要时我们可以同时使用。让我们使用这两个伟大的框架,享受编写测试的快乐吧。
 
  我为什么从JUnit换到了TestNG上——Andres Almiray当我开始编写测试程序时候,我选择了JUnit3.x.因为那个时候它是唯一的开源选择,而且有着相当详尽的文档和成堆的书供我参考。在此基础上还有许多扩展如dbUnit,xmlUnit帮助测试一些大型组件。但是如果我们需要面对更多复杂的测试,通常是集成/功能测试,很明显JUnit会力不从心。那就是为什么我换到TestNG上。Cedric和Alexandru TestNG的作者从一开始就很明确,TestNG是为更广的测试场合而设计,而不仅是单元测试。TestNG可以运行没有修改过的JUnit测试,这使得两者的转换非常平滑。

 稍后发布的JUnit4.x在细节上非常类似TestNG,这也弥补了这两个框架的裂痕。TestNG仍然是我最喜欢的,而且它仍然保持更新。现在在开源的Java测试框架中仍然有新进者,easyb,一个基于Groovy行为驱动开发的测试工具,为Java和Groovy测试。通过编写合理的测试或是假定一个任务,它可以视为一种规范尽管它是可执行代码。如果你在Ruby世界中使用Rspec一样。
 
  为什么JUnit仍然是首选——Aslam Khan像许多人开始测试驱动开发和单元测试一样,我也是从JUnit3.x起步的。我发现JUnit是最广泛的工具,出现在各种不同的地方(ANT,Maven,Eclipse,IntelliJ IDEA, 等)。它也很容易介绍给那些新团队。我也使用TestNG对它的多样性同样印象深刻。然而,JUnit的大量插件(dbUnit,xmlUnit等)使得Junit仍然是首选的。如果你花大量的时间在Spring上,那么基于Junit的Srping ApplicationContext aware测试用例会带来优势。为了测试前台,我几乎只使用Selenium.我曾经涉足过Canoo和其他的框架,但是发现这些途径都是反TDD模式的。使用Selenium,我可以处理Selenium测试脚本和记录,给任何需要的人并日后处理。
 
  如果我们谈论的是纯粹的TDD,即书写良好的代码(不仅仅是良好的测试)需要增加一个mock测试。对于mocking,我使用Jmock,它和Junit配合良好,通过基于mock的方式和程序内部边界,我得到了设计良好的,互相通信的对象。这在可读性和可维护性上迈出了重要的一步。EasyMock也不错,但是Jmock是我个人的首选。
 
  从Java世界上溯到Ruby世界中,RSpec很优秀而且也有DSL来描述场景。既然Rbehave已经融合进了Rspec,这样的整合将成为Ruby世界的首选。有趣的是,Rbehave是从Jbehave衍生来来,它是一个行为驱动开发测试框架。如果你喜欢BDD模式来收集和确定需求,你会喜欢Jbehave和RSpec.

分享到:
评论

相关推荐

    Selenium终极自动化测试环境搭建【Eclipse+Junit+TestNG+Python】

    Junit 是 Java 语言的测试框架,TestNG 是一种功能更强大的测试框架。它们都可以与 Selenium 集成,用于自动化测试。 九、Python 在自动化测试中的应用 Python 是一种流行的编程语言,广泛应用于自动化测试中。...

    testng junit 下一代测试框架

    TestNG和JUnit是两种广泛使用的Java测试框架,它们在软件质量保证和持续集成流程中扮演着重要角色。本文将深入探讨这两个测试框架的特性和差异,以及为什么TestNG被誉为下一代测试框架。 TestNG是由Cedric Beust...

    java+selenium+maven+testng自动化测试框架实例(实际项目)

    **TestNG**: TestNG是另一个流行的测试框架,提供了比JUnit更高级的功能,如并发测试、参数化测试、测试套件和报告。TestNG可以和Selenium结合使用,用于组织和运行测试用例,以及生成详细的测试报告。它支持注解,...

    Java测试新技术:TestNG和高级概念

    TestNG是一个强大的测试框架,它在JUnit的基础上进行了扩展,提供了更多的功能和高级概念,使得测试工作更加高效和灵活。本文将深入探讨TestNG以及与其相关的高级测试概念。 TestNG是由Cedric Beust创建的,它支持...

    testing-junit-testng

    标题与描述均提到了...总之,JUnit和TestNG都是优秀的Java测试框架,选择哪个框架取决于项目的具体需求和团队的熟悉程度。无论选择哪一个,都能够有效地提高代码质量和测试效率,确保软件产品的稳定性和可靠性。

    junit和TestNG框架入门

    ### Java单元测试框架选择与应用 #### 一、测试框架的选择和对比 ##### 1. 单元测试框架的选择原则 在选择单元测试框架时,应遵循以下几项基本原则: - **兼容性**:测试框架应当与现有项目的代码结构相匹配,...

    java测试新技术-TestNG和高级概念

    TestNG是Java领域的一个新兴的测试框架,它是"Testing Next Generation"的缩写,意为下一代测试技术。TestNG与传统的JUnit测试框架不同,它提供了更多高级的测试功能,比如并行测试、参数化测试、测试依赖管理、灵活...

    Selenium+Eclipse+Junit+TestNG.docx

    Selenium+Eclipse+Junit+TestNG 自动化测试框架搭建指南 本文将详细介绍如何使用 Selenium+Eclipse+Junit+TestNG 搭建自动化测试框架,包括安装 JDK、Eclipse、Selenium IDE、Selenium RC、IEDriverServer、...

    JAVA测试新技术-TESTNG

    本文将深入探讨一种先进的Java测试框架——TestNG,它为开发者提供了比JUnit更强大的功能和灵活性。 TestNG是由Cédric Beust创建的,它在JUnit的基础上进行了扩展,引入了许多高级特性,如并行测试执行、配置方法...

    Java测试新技术-TestNG

    TestNG(全称为Test Next Generation)是一种用于Java语言的测试框架,它在传统JUnit测试框架的基础上,提供了许多新的功能,使得编写测试用例更加灵活高效。TestNG不仅支持单元测试,同样适用于集成测试,功能测试...

    追求代码质量:Junit4与TestNG的对比

    本文主要探讨了两个流行的Java测试框架——JUnit 4和TestNG,它们都是用于编写和执行自动化测试的工具。尽管JUnit 4引入了注解来提高测试的灵活性,但TestNG早在JUnit 4之前就已采用了注解,并且提供了更多高级特性...

    Java测试新技术TestNG和高级概念 (英文版 清晰pdf 可下载)

    TestNG是Java测试领域的一款重要框架,它在JUnit和JMock等传统测试工具的基础上,引入了许多新特性,为开发者和测试工程师提供了更为强大和灵活的测试解决方案。本资源"Next Generation Java Testing. TestNG and ...

    Java测试新技术TestNG和高级概念.part3

    本书主要内容包括: 展示了与测试有关的折衷考虑,这样您就能在测试...无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。

    Java测试新技术TestNG和高级概念.part2

    无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...

    testNG与Junit相同功能概要介绍

    TestNG和JUnit是两种广泛使用的Java测试框架,它们在软件测试领域扮演着至关重要的角色。本文将对两者进行深入的比较和概要介绍,旨在帮助读者理解它们的相似之处以及如何选择适合自己的测试工具。 首先,TestNG和...

    Java测试新技术:TestNG和高级概念(英文版)

    首先,标题中提到的“Java测试新技术: TestNG和高级概念(英文版)”指出了本文的核心内容涉及Java编程语言测试领域的新技术——TestNG框架,以及一些高级概念。TestNG(Testing New Generation)是一种广泛用于Java...

    单元测试框架-TestNG-的eclipse插件

    JUnit 框架是 Java 语言单元测试当前的一站式解决方案。这个框架值得称赞,因为它把测试驱动的开发思想介绍给 Java 开发人员并教给他们如何有效地编写单元测试。但是,在过去的几年中,JUnit 的改进不大;所以,为...

    Java测试新技术TestNG和高级概念.part4

    本书主要内容包括: 展示了与测试有关的折衷考虑,这样您就能在测试...无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。

Global site tag (gtag.js) - Google Analytics