在工作中,我们目前仍在使用JUnit 3来运行我们的测试。我们一直在考虑为正在编写的新测试切换到JUnit 4,但我已经关注TestNG有一段时间了。你们都有过使用JUnit 4或TestNG的经验吗?哪一种似乎更适合于大量的测试?编写测试的灵活性对我们来说也很重要,因为我们的功能测试涵盖了广泛的方面,需要以各种方式编写才能获得结果。
旧的测试不会被重写,因为它们做得很好。然而,我希望在新的测试中看到的是测试编写方式的灵活性、自然的断言、分组和易于分布式的测试执行。
发布于 2008-08-09 07:00:34
这两种测试我都用过,但我不得不同意Justin Standard的观点,即你不应该真的考虑将现有测试重写为任何新的格式。不管是什么决定,同时运行这两个是相当微不足道的。TestNG努力使其比JUnit更具可配置性,但最终两者都能同样出色地工作。
TestNG有一个很好的特性,您可以将测试标记为特定的组,然后轻松运行特定组的所有测试,或者排除特定组的测试。因此,您可以将运行缓慢的测试标记为“慢”组,然后在需要快速结果时忽略它们。他们文档中的一个建议是将一些子集标记为"checkin“测试,这些测试应该在您签入新文件时运行。我从来没有在JUnit中看到过这样的特性,但是话又说回来,如果你没有它,你也不会错过它。
尽管它声称高配置,但我确实在几周前遇到了一个角落案例,在那里我无法做我想做的事情……我希望我能记住它是什么,但我想把它提出来,这样你就知道它并不完美。
TestNG最大的优势是注解...无论如何,JUnit在版本4中添加了它。
发布于 2008-08-09 06:33:51
首先,我要说的是,不要为了适应最新的时尚而重写所有的测试。Junit3工作得很好,而且在4中引入注释并不会给您带来太多好处(在我看来)。更重要的是你们写测试,而且听起来你们也是这样做的。
使用任何看起来最自然的东西,帮助你完成工作。
我不能评论TestNG b/c我还没有用过它。但我推荐unitils,无论您采用哪种方式,它都是一个很好的JUnit/TestNG/DBUnit/EasyMock包装器。(它支持上面提到的所有口味)
发布于 2008-08-09 09:33:28
大约一年前,我们遇到了同样的问题。我花了一些时间考虑哪一步更好,最终我们意识到TestNG没有“杀手级功能”。它很不错,而且有一些JUnit 4没有的功能,但我们不需要它们。
我们不希望人们在了解TestNG的同时对编写测试感到不自在,因为我们希望他们继续编写大量的测试。
此外,JUnit几乎是Java界的事实标准。没有一个像样的工具不支持它,你可以在网上找到很多帮助,他们在过去的一年里添加了很多新功能,这表明它是活跃的。
我们决定坚持使用JUnit,再也不回头了。
https://stackoverflow.com/questions/6658
复制相似问题