虽然我已经用Java编程了大约3年+现在(不是日常但至少我理解基础知识),但还没有真正进入单元测试领域......
我的工作现在更多面向测试/问题分析,所以我认为一个好的Java单元测试框架对这个角色非常有帮助。
显然,没有关于在我的团队中使用哪个框架的正式规则。所以只是想知道,作为初学者,哪个框架很快就能开始使用?
的Junit?
TestNG的?
或其他什么?
编辑:与亚马逊上的TestNG相比,JUnit似乎有更多的印刷书籍作为参考。但我现在还不知道他们在Java行业中的受欢迎程度/趋势。
答案 0 :(得分:31)
我是TestNG的创建者和“下一代测试”一书的作者,所以这里有一些(显然有偏见的)想法。
对于功能(或端到端/集成/系统,无论你喜欢什么术语)测试,TestNG提供了JUnit没有的一些功能,用户发现它们非常有用:
组。编译完测试后,您可以让TestNG运行所有“前端”测试,或“快速”,“慢速”,“数据库”等...
支持多线程测试。这有两个不同的含义:
1)您可以告诉TestNG在您定义的线程池中同时运行所有测试(XML文件中的一行更改)。这是非常可配置的,因此非多线程的测试仍然可以在单线程中运行。
2)你可以告诉TestNG从p个线程调用你的测试方法n次。这使您可以很好地了解正在测试的代码的线程安全性。
测试依赖的另一个直接优势是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。
答案 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)
以下链接可能对您有用! http://www.javarmi.com/2010/08/junit-4-tutorial-and-example-get-starting/
答案 10 :(得分:0)
Junit是最好的起点。 Junit 4.x有许多丰富的功能,如注释等,它也得到了Spring等流行框架的良好支持。
答案 11 :(得分:-1)
我会选择JUnit。