我已经阅读了 JUnit 和 TestNG 的一些比较,看起来TestNG有更多的配置选项。另一方面,IDE更多支持JUnit,构建工具,有更多的插件。
我没有编写单元测试的经验。 我更喜欢哪种工具?
P.S。 我认为我的问题更像是:我应该尝试一下TestNG,还是像其他人一样坚持使用JUnit?
P.S。 我们开发Web应用程序,因此我认为选择时还应考虑我们稍后将使用Selenium进行功能测试。
答案 0 :(得分:8)
编写TestNG是为了克服JUnit 3的一些感知限制。查看Cedric的blog post或TestNG site上的其他文章以了解他的想法。
请注意,JUnit 3的一些限制是按设计,而TestNG故意允许您执行JUnit的设计者明确阻止的事情。
TestNG对JUnit 3的最大优势在于它允许您使用注释来定义测试,而不是强迫您扩展JUnit基类。 JUnit 4现在也可以以相同的方式使用注释,缩小差距。
TestNG和JUnit之间最大的差异是TestNG允许您的测试相互依赖,并允许您通过测试注释表达这些依赖关系。相反,JUnit会强制所有测试彼此独立。
当然还有其他差异 - TestNG默认为assertEquals(actual, expected, message)
而JUnit为assertEquals(message, expected, actual)
- 但这是最大的。
我会说:选择一个,然后尝试一下。写一些测试。这两种方法都适用于Selenium。两者都适用于蚂蚁。两者都可以与CruiseControl或Hudson一起使用。学习编写好的单元测试比学习一组特定的命令要重要得多(无论如何它们非常相似)。
TestNG拥有更强大的功能和更少的限制,IMO,但这当然也为你提供了更多机会来解决问题。
答案 1 :(得分:3)
如果这是你第一次,我会推荐JUnit。
这是第一个,也是最受欢迎的。它有很好的文档记录,有很好的工具支持,并且是一种比喻 - 至少在最初 - 被翻译成所有不同的语言(参见xUnit实现)。对于大多数项目来说它应该可以正常工作,这是一个很好的工具。作为程序员,这将是一个很好的基准。
“替代品”还有其他特征 - 这就是为什么有替代品的原因 - 但通常情况比风格更重要。 TestNG可能有一些不同的功能,但JUnit也发展了注释,替代匹配器等功能。
是的,JUnit会在时机成熟时与Selenium合作。
答案 2 :(得分:0)
TestNg和Unitils的结合是无与伦比的..它就足以满足您的所有要求..
答案 3 :(得分:0)
我总是投票给'和其他人一样',因为:在大多数情况下这种体验更有价值,因为有很多信息,而且,对于jUnit来说,它被移植到许多语言,所以这种体验将是'跨平台'。
答案 4 :(得分:0)
Junit是最受欢迎的,它支持插件,所以最好使用它
答案 5 :(得分:0)
JUnit和TestNG都非常相似,一旦你知道其中一个,就很容易拿起另一个。
我使用TestNG的主要原因是测试组和测试依赖项。您可以将测试分配给不同的组,然后轻松运行组中的所有测试,或从组中排除某些测试。例如,如果我想隔离几个测试,我可以简单地将它们添加到测试组“fahd”,然后仅运行该组。测试依赖项允许您在依赖测试失败时跳过测试。您可能认为这些功能不是很重要,但是一旦您使用它们,您就会想知道没有它们的生活方式。
答案 6 :(得分:0)
我是JavaEE开发人员。我们大量使用JUnit来测试我们的业务逻辑模块。它非常强大,灵活,我们在官方发布文档中使用他的html报告作为质量证明。