我不熟悉Java中的自动化测试。我应该选择哪种工具? JUnit还是TestNG?

时间:2010-09-22 07:25:38

标签: java unit-testing junit testng

我已经阅读了 JUnit TestNG 的一些比较,看起来TestNG有更多的配置选项。另一方面,IDE更多支持JUnit,构建工具,有更多的插件。

我没有编写单元测试的经验。 我更喜欢哪种工具?

P.S。 我认为我的问题更像是:我应该尝试一下TestNG,还是像其他人一样坚持使用JUnit?

P.S。 我们开发Web应用程序,因此我认为选择时还应考虑我们稍后将使用Selenium进行功能测试。

7 个答案:

答案 0 :(得分:8)

编写TestNG是为了克服JUnit 3的一些感知限制。查看Cedric的blog postTestNG 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报告作为质量证明。