JUnit vs TestNG [已关闭]

2022-08-31 08:39:59

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

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


答案 1

我用过两者,但我必须同意Justin Standard的观点,即你不应该真正考虑将现有的测试重写为任何新格式。无论决定如何,同时运行两者都是相当微不足道的。TestNG努力比JUnit更具可配置性,但最终它们都同样有效。

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

尽管它声称具有高配置,但几周前我确实遇到了一个角落案例,我无法做我想做的事情......我希望我能记住它是什么,但我想把它提出来,这样你就知道它并不完美。

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


答案 2

首先,我想说的是,不要为了适应最新的时尚而重写所有测试。Junit3工作得很好,在4中引入注释并不能让你买到很多东西(在我看来)。更重要的是,你们要写测试,听起来就像你们一样。

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

我不能评论TestNG b / c,我没有使用它。但是我会推荐unitils,一个伟大的包装器,用于JUnit/TestNG/DBUnit/EasyMock,无论你走哪条路线。(它支持上面提到的所有口味)