用Java进行单元测试 - 它是什么?

时间:2010-03-01 11:39:00

标签: java unit-testing junit

你能用几句话解释一下:

  1. 为什么我们需要它/为什么它们让我们的生活更轻松?
  2. 如何对Java中的简单示例进行单元测试?
  3. 我们什么时候不需要它们/类型的项目我们可以退出单元测试?
  4. 有用的链接

7 个答案:

答案 0 :(得分:13)

  1. 因为这证明了应用程序实际上是按预期工作的。您还会发现回归错误更容易。测试变得更容易,因为您不必手动完成每个可能的应用程序状态。最后,即使您手动测试了代码,您也很可能会发现甚至不知道存在的错误。

  2. Google for junit

  3. 如上所述,应始终编写单元测试,以证明应用程序按预期工作。有些东西不能或可能难以测试,例如图形用户界面。这并不意味着不应该测试GUI,它只意味着你应该使用其他工具。

  4. 见第2点。

答案 1 :(得分:13)

  

为什么我们需要它/为什么它们让我们的生活更轻松?

  • 它允许您检查您正在测试的代码片段的预期行为,作为它必须满足的合同。
  • 它还允许您在不破坏代码功能(合同)的情况下安全地重新编码代码。
  • 它允许您在纠正错误后通过实施单元测试来确保修复错误。
  • 它可以作为编写解耦代码的一种方式(如果您在编写代码时考虑过测试)。
  

如何对Java中的简单示例进行单元测试?

查看JUnit网站和JUnit cookbook了解详情。编写JUnit测试用例并不多。实际上,提出好的测试用例肯定比实际实施更难。

  

我们什么时候不需要它们/类型的项目我们可以让单元测试出来?

不要尝试测试类中的每个方法,而是专注于测试类的功能。例如豆,你不会为getter和setter编写测试......

  

链接

JUnit - 单元测试

EclEmma - 测试覆盖率工具

link text - 维基百科单元测试链接

答案 2 :(得分:2)

Unit Testing上阅读维基百科的文章可能很有用,因为这将回答你关于为什么的大部分问题。 JUnit网站有编写Java单元测试的资源,Junit Cookbook应该是您的第一站。

就个人而言,我编写单元测试来测试方法的合同,即特定功能的文档。这样,您将进入增加测试覆盖率和改进文档的循环。但是,您应该尽量避免测试:

  • 其他人的代码,包括JDK
  • 非确定性代码,例如java.util.Random

JUnit并不是唯一可用于Java的单元测试框架,因此在深入研究之前,您应该评估其他框架,例如TestNG

除了“顶级”框架之外,您还会发现很多涉及特定领域的项目,例如:

答案 3 :(得分:2)

我想写的内容已经在很多回复中介绍过,但我想我会加上这个......

关于何时使用/不使用单元测试的最佳文章是Steve Sanderson's blog。这是一篇很好的文章,涵盖了基于代码库的不同部分的单元测试的成本/收益(即对100%覆盖率的引人注目的论据)

答案 4 :(得分:1)

关于Java中单元测试的最佳书籍之一是Pragmatic Unit Testing in Java with JUnit(Andy Hunt& Dave Thomas)

答案 5 :(得分:1)

这就是你的编程方式:

  • 决定一个接口(不一定是java接口,但是方法对每个人来说都是怎样的)
  • 写一个测试
  • 编写实施代码

答案 6 :(得分:0)

正如它的名字所示,它是我们计划中我们单位的测试。例如,如果你有一个方法返回两个整数的总和,你将用两个数字测试它,看它是否正常工作。例如,对于2 + 2,它返回4.

我们需要这些测试,因为在大项目中,有很多程序员。这些程序员和谐地工作是很重要的。单元测试就像我们程序员编写的程序的正确性证明。所以,程序员编写他的程序加上它的单元测试,以表明他的程序正常工作。然后,他将更改提交给项目。这些测试可以帮助您在发生之前防止大量错误。

我有一个循序渐进的过程作为示例,在Eclipse中写下Java单元测试。请查看" How To Write Unite Tests"。

我希望它有所帮助。