JUnit与TestNG

问题

在工作中,我们目前仍在使用JUnit 3来运行我们的测试。我们一直在考虑切换到JUnit 4 for新的测试,但我一直在关注TestNG一段时间。你对JUnit 4或TestNG有什么经验,对于大量的测试似乎更好?编写测试的灵活性对我们也很重要,因为我们的功能测试涵盖了广泛的方面,需要以各种方式编写才能获得结果。

旧的测试不会被重写,因为他们的工作做得很好。我希望在新测试中看到的是测试编写方式的灵活性,自然断言,分组和易于分布的测试执行。


#1 热门回答(58 赞)

我已经使用了两者,但我必须同意Justin Standard,你不应该考虑将现有测试重写为任何新格式。无论做出何种决定,两者兼顾都是微不足道的。 TestNG比JUnit更加可配置,但最终它们同样运行良好。

TestNG具有一个简洁的功能,你可以将测试标记为特定组,然后轻松运行特定组的所有测试,或排除特定组的测试。因此,你可以标记在"慢"组中运行缓慢的测试,然后在需要快速结果时忽略它们。他们的文档中的一个建议是将某些子集标记为"checkin"测试,每当你检查新文件时都应该运行。我从未在JUnit中看到过这样的功能,但是如果你没有,那么你就不会真的很想念它。

对于高配置的所有声明,几周前我碰到了一个角落的情况我无法做我想做的事情...我希望我能记住它是什么,但我想提起它所以你知道它并不完美。

TestNG的最大优势是注释......无论如何,JUnit在版本4中添加了注释。


#2 热门回答(20 赞)

首先我要说的是,不要为了适应最新的时尚而重写所有测试。 Junit3运行得非常好,并且在4中引入注释并不会让你非常喜欢(在我看来)。你们写作测试更重要,听起来就像你一样。

使用看起来最自然的东西,帮助你完成工作。

我无法评论TestNG b / c我还没有用过它。但我会推荐unitils,它是JUnit / TestNG / DBUnit / EasyMock的绝佳包装器,无论你走哪条路线。 (它支持上面提到的所有口味)


#3 热门回答(19 赞)

大约一年前,我们遇到了同样的问题。我花了一些时间考虑哪一步更好,最终我们意识到TestNG没有"杀手级功能"。这很好,并且具有JUnit 4没有的一些功能,但我们不需要它们。
我们不希望人们在了解TestNG时感到不舒服,因为我们希望他们继续编写大量测试。
此外,JUnit几乎是Java世界中事实上的标准。没有合适的工具不支持它,你可以在网上找到很多帮助,他们在过去一年中添加了许多新功能,这表明它还活着。

我们决定坚持使用JUnit,从不回头。