background image

(译者按: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.