与jUnit相比,TestNG的缺点是什么?

时间:2010-11-23 20:45:41

标签: junit testng

我熟悉jUnit,并且听说TestNG可能是某些jUnit烦恼的解决方案 - 例如它坚持每次测试创建一个单独的测试类实例,因此迫使我对我想在测试之间重用的对象使用静态字段。

(假设你同意我的观点,这是一个缺点,而不是将这个问题转化为不是这样的问题)

我在这里问的是,与jUnit相比,TestNG有什么缺点?为什么不使用TestNG,假设这是一个新项目并且没有任何迁移成本?

4 个答案:

答案 0 :(得分:6)

我是TestNG的创建者。因为我显然有偏见,所以我不会权衡,但我很乐意回答你对TestNG可能有的任何疑问。

安迪:谢谢你的评论。仅供参考(您可能已经知道,但原始海报可能没有),there is a TestNG Eclipse plug-in(我与TestNG并行开发)。

答案 1 :(得分:5)

与JUnit相比,我个人没有遇到任何明显的缺点。

在一个新项目开始时,我的团队切换到TestNG并且没有后悔。 TestNG功能更强大,支持比单元测试更广泛的用途。

有些工具支持JUnit但不支持TestNG。这些是我尚未需要的工具。例如:

  • Google的CodePro Analytix支持generation of JUnit unit tests
  • 用于RCP开发的Eclipse IDE支持“JUnit插件测试”的运行/调试配置。

答案 2 :(得分:3)

作为TestNG的巨大支持者,我仍然认为它被工具作者视为第二名。许多工具和库从一开始就支持JUnit,但您必须等到它们也实现对TestNG的支持。如果您计划使用一些最新的嗡嗡声技术,这可能是一个严重的缺点。

多年来情况有所改善。例如,这曾经是Spring,Gradle或Maven Surefire的问题,但不再是问题,因为它们现在都支持TestNG。此外,所有IDE都同等地处理两个框架。

因此,请确保您计划使用的其他技术与TestNG很好地配合使用。这很少是一个问题,但仍然可以更好地确保它前进。

答案 3 :(得分:1)

对我来说,最大的问题是与春天的融合。 我不喜欢扩展TestNg类并编写如下代码:

@Test
@ContextConfiguration(locations = { "classpath:spring-test-config.xml" })
public class TestSpring extends AbstractTestNGSpringContextTests {

因为我通常拥有自己的测试类层次结构。 这是我停止使用TestNg的主要原因。

我必须同意参数化测试对我来说非常有吸引力。但是它们很容易被junit data-provider替换。

https://github.com/TNG/junit-dataprovider/wiki/Getting-started