现在要为Java学习哪个UnitTest框架?

时间:2010-08-05 04:34:06

标签: java unit-testing junit testng

虽然我已经用Java编程了大约3年+现在(不是日常但至少我理解基础知识),但还没有真正进入单元测试领域......

我的工作现在更多面向测试/问题分析,所以我认为一个好的Java单元测试框架对这个角色非常有帮助。

显然,没有关于在我的团队中使用哪个框架的正式规则。所以只是想知道,作为初学者,哪个框架很快就能开始使用?

的Junit?

TestNG的?

或其他什么?

编辑:与亚马逊上的TestNG相比,JUnit似乎有更多的印刷书籍作为参考。但我现在还不知道他们在Java行业中的受欢迎程度/趋势。

12 个答案:

答案 0 :(得分:31)

我是TestNG的创建者和“下一代测试”一书的作者,所以这里有一些(显然有偏见的)想法。

对于功能(或端到端/集成/系统,无论你喜欢什么术语)测试,TestNG提供了JUnit没有的一些功能,用户发现它们非常有用:

  • 组。编译完测试后,您可以让TestNG运行所有“前端”测试,或“快速”,“慢速”,“数据库”等...

  • 支持多线程测试。这有两个不同的含义:

1)您可以告诉TestNG在您定义的线程池中同时运行所有测试(XML文件中的一行更改)。这是非常可配置的,因此非多线程的测试仍然可以在单线程中运行。

2)你可以告诉TestNG从p个线程调用你的测试方法n次。这使您可以很好地了解正在测试的代码的线程安全性。

  • 测试依赖关系和确定性排序。这对于集成测试非常有用,在这种测试中,看到需要先前测试方法才能成功运行的测试方法是非常常见的。由于这个特殊原因,TestNG在Selenium社区非常受欢迎(“如果登录测试失败,请不要费心测试我的网站的这个页面”。)

测试依赖的另一个直接优势是TestNG可以告诉你“1方法失败,99方法被跳过”,这比“100方法失败”更准确。

TestNG有很多很多功能,我很乐意在这里或我们的邮件列表(http://groups.google.com/group/testng-users)回答问题。

答案 1 :(得分:6)

我会用Unitils学习TestNG。始终满足我的所有需求。添加XMLUnit和DBUnit,你应该很长时间安顿下来。

答案 2 :(得分:3)

说实话,JUnit比TestNG更受欢迎,至少在这里我工作和生活。我知道这可能是一个奇怪的论点,但如果我是你,我会扫描一些工作添加,看看你所在地区/国家的行业有哪些框架(例如我因为这个而去JUnit,我的意思是确定我可以学习TestNG,它可能会变得更好,但如果所有雇主都需要JUnit知识,它对我有什么好处呢?)。

答案 3 :(得分:2)

虽然看起来似乎是一个小标准,但所有事情都是平等的,看起来工作趋势非常有利于JUnit。

http://www.indeed.com/jobtrends?q=TestNG%2C+JUnit&l=

答案 4 :(得分:2)

两者都做得很好,所以没有对错。您可以将它们与众多框架结合使用,以帮助支持您的开发。

如果您需要为客户工作,您可以学习您希望使用的客户。如果没有,最好的想法是尝试两种方法,找出最适合你的方法。

答案 5 :(得分:2)

我已经使用过两者并且发现对于单元测试只有jUnit工作得很好,但就系统测试而言,我会推荐TestNG。 TestNG提供了一些额外的功能(如参数测试),并且非常灵活。例如,在jUnit中,一个套件中的测试失败通常意味着您必须重新运行整个套件,但在TestNG中,您可以简单地重新运行失败的测试。这是一篇非常好的文章,概述了两者(虽然它有点偏向于TestNG)

http://www.ibm.com/developerworks/java/library/j-cq08296/index.html

答案 6 :(得分:2)

JUnit在包括Eclipse在内的许多IDE中得到了很好的支持,带有注释的JUnit 4非常适合使用。

除非您有特定需求,否则请寻求工具支持,即jUnit。

答案 7 :(得分:1)

使用Unitils的TestNG非常棒。它涵盖了几乎所有要求。 Unitils支持很多断言工具,Spring,Hibernate,模拟框架,dbutils等。

答案 8 :(得分:1)

对我来说,这只是一个品味问题。我个人现在每天使用jUnit超过5年,我对它非常满意,特别是最后一个版本及其@Rule功能阻止我的团队一遍又一遍地编写相同的代码。 它与我每天使用的所有工具很好地集成:IDE,构建,连续集成......

答案 9 :(得分:1)

Junit是着名且最好的单元测试工具,我想你和我都知道Junit是如此重要,以至于Java开发人员将他们的编码模式改为junit贡献,你可以学习一些Junit作为基本单元测试技术以及学习testng作为第二单元测试技术。

以下链接可能对您有用! http://www.javarmi.com/2010/08/junit-4-tutorial-and-example-get-starting/

答案 10 :(得分:0)

Junit是最好的起点。 Junit 4.x有许多丰富的功能,如注释等,它也得到了Spring等流行框架的良好支持。

答案 11 :(得分:-1)

我会选择JUnit。