12

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

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

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

朱尼特?

测试NG?

或者是其他东西?

编辑:与亚马逊上的 TestNG 相比,JUnit 似乎有更多的印刷书籍作为参考。但目前我不知道它们在 Java 行业中的流行度/趋势。

4

12 回答 12

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 ) 上回答问题。

于 2010-08-05T17:26:28.793 回答
6

我会用Unitils学习 TestNG 。一直满足我的所有需求。添加 XMLUnit 和 DBUnit,你应该可以安顿好久了。

于 2010-08-05T04:37:08.710 回答
3

老实说,我的 JUnit 比 TestNG 更受欢迎,至少在我工作和生活的地方是这样。我知道这可能是一个奇怪的论点,但如果我是你,我会浏览一些工作添加,看看你所在地区/国家/地区的行业喜欢哪个框架(例如,我因此选择 JUnit,我的意思是当然我可以学习 TestNG,结果可能会更好,但是如果所有雇主都需要 JUnit 知识,这对我有什么好处?)。

于 2010-08-05T08:04:33.583 回答
2

尽管这似乎是一个微不足道的标准,但一切都是平等的,但看起来工作趋势非常有利于 JUnit。

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

于 2010-08-05T05:00:56.860 回答
2

两者都同样出色地完成工作,因此没有对错之分。您可以将两者与众多框架结合使用,以帮助支持您的开发。

如果你需要为客户工作,你可以学习你期望使用的那个。如果没有,最好的办法是同时尝试它们并找出最适合您的方法。

于 2010-08-05T05:15:33.190 回答
2

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

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

于 2010-08-05T05:21:45.573 回答
2

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

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

于 2010-08-05T07:54:49.153 回答
1

带有 Unitils 的 TestNG 真的很棒。它涵盖了几乎所有的要求。Unitils 支持许多断言工具、Spring、Hibernate、模拟框架、dbutils 等。

于 2010-08-05T04:40:33.987 回答
1

对我来说,这只是一个品味问题。我个人每天使用 jUnit 已经超过 5 年了,我对它非常满意,尤其是最后一个版本及其 @Rule 功能可以防止我的团队一遍又一遍地编写相同的代码。它与我日常使用的所有工具完美集成:IDE、构建、持续集成……

于 2010-08-05T05:24:08.223 回答
1

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

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

于 2010-08-26T09:21:27.983 回答
0

Junit 是最好的起点。Junit 4.x 具有许多丰富的特性,如注解等,并且得到了 Spring 等流行框架的良好支持。

于 2010-08-05T10:49:21.917 回答
-1

我会选择 JUnit。

于 2010-08-05T04:37:21.813 回答