Java 框架:选择 Java 测试框架
自动测试成为你 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
”
文件 。