单元测试利器 JUnit 4<o:p></o:p>
<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style="WIDTH: 0.75pt; HEIGHT: 4.5pt"><v:imagedata o:href="http://www.ibm.com/i/c.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>
|
<o:p> </o:p>
|
<o:p></o:p>
|
<o:p> 转自: http://www.ibm.com/developerworks/cn/java/j-lo-junit4/</o:p>
<v:shape id="_x0000_i1026" type="#_x0000_t75" alt="" style="WIDTH: 7.5pt; HEIGHT: 0.75pt"><v:imagedata o:href="http://www.ibm.com/i/c.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>
|
<o:p> </o:p>
|
<o:p> </o:p>
|
级别: 中级<o:p></o:p>
苑 永凯 (yuanyk@gmail.com), 软件工程师<o:p></o:p>
<st1:chsdate isrocdate="False" month="2" day="28" islunardate="False" w:st="on" year="2007">2007 年 2 月</st1:chsdate> 28 日<o:p></o:p>
本文主要介绍了如何使用 JUnit 4 提供的各种功能开展有效的单元测试,并通过一个实例演示了如何使用 Ant 执行自动化的单元测试。本文假设读者对 Eclipse 下进行 Java 开发有一定的经验,并了解 Java 5 中的注解(annotation)特性。<o:p></o:p>
引言<o:p></o:p>
毋庸置疑,程序员要对自己编写的代码负责,您不仅要保证它能通过编译,正常地运行,而且要满足需求和设计预期的效果。单元测试正是验证代码行为是否满足预期的有效手段之一。但不可否认,做测试是件很枯燥无趣的事情,而一遍又一遍的测试则更是让人生畏的工作。幸运的是,单元测试工具 JUnit 使这一切变得简单艺术起来。<o:p></o:p>
JUnit 是 Java 社区中知名度最高的单元测试工具。它诞生于 1997 年,由 Erich Gamma 和 Kent Beck 共同开发完成。其中 Erich Gamma 是经典著作《设计模式:可复用面向对象软件的基础》一书的作者之一,并在 Eclipse 中有很大的贡献;Kent Beck 则是一位极限编程(XP)方面的专家和先驱。<o:p></o:p>
麻雀虽小,五脏俱全。JUnit 设计的非常小巧,但是功能却非常强大。Martin Fowler 如此评价 JUnit:在软件开发领域,从来就没有如此少的代码起到了如此重要的作用。它大大简化了开发人员执行单元测试的难度,特别是 JUnit 4 使用 Java 5 中的注解(annotation)使测试变得更加简单。<o:p></o:p>
<o:p> </o:p>
<v:shape id="_x0000_i1027" type="#_x0000_t75" alt="" style="WIDTH: 0.75pt; HEIGHT: 0.75pt"><v:imagedata o:href="http://www.ibm.com/i/v14/rules/blue_rule.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif"></v:imagedata></v:shape>
<v:shape id="_x0000_i1028" type="#_x0000_t75" alt="" style="WIDTH: 6pt; HEIGHT: 4.5pt"><v:imagedata o:href="http://www.ibm.com/i/c.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>
|
<v:shape id="_x0000_i1029" type="#_x0000_t75" alt="" style="WIDTH: 0.75pt; HEIGHT: 0.75pt"><v:imagedata o:href="http://www.ibm.com/i/c.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1030" type="#_x0000_t75" alt="" style="WIDTH: 12pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.ibm.com/i/v14/icons/u_bold.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image006.gif"></v:imagedata></v:shape><o:p></o:p>
|
回页首<o:p></o:p>
|
<o:p></o:p>
|
<o:p> </o:p>
JUnit 4 初体验<o:p></o:p>
在开始体验 JUnit 4 之前,我们需要以下软件的支持:<o:p></o:p>
- Eclipse:最为流行的 IDE,它全面集成了 JUnit,并从版本 3.2 开始支持 JUnit 4。当然 JUnit 并不依赖于任何 IDE。您可以从 http://www.eclipse.org/ 上下载最新的 Eclipse 版本。 <o:p></o:p>
- Ant:基于 Java 的开源构建工具,您可以在 http://ant.apache.org/ 上得到最新的版本和丰富的文档。Eclipse 中已经集成了 Ant,但是在撰写本文时,Eclipse 使用的 Ant 版本较低(必需 1.7 或者以上版本),不能很好的支持 JUnit 4。 <o:p></o:p>
- JUnit:它的官方网站是 http://www.junit.org/。您可以从上面获取关于 JUnit 的最新消息。如果您和本文一样在 Eclipse 中使用 JUnit,就不必再下载了。 <o:p></o:p>
首先为我们的体验新建一个 Java 工程 —— coolJUnit。现在需要做的是,打开项目 coolJUnit 的属性页 -> 选择“Java Build Path”子选项 -> 点选“Add Library…”按钮 -> 在弹出的“Add Library”对话框中选择 JUnit(图1),并在下一页中选择版本 4.1 后点击“Finish”按钮。这样便把 JUnit 引入到当前项目库中了。<o:p></o:p>
图1 为项目添加 JUnit 库
<v:shape id="_x0000_i1031" type="#_x0000_t75" alt="图1 为项目添加 JUnit 库" style="WIDTH: 415.5pt; HEIGHT: 338.25pt"><v:imagedata o:href="http://www.ibm.com/developerworks/cn/java/j-lo-junit4/figure001.jpg" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image007.jpg"></v:imagedata></v:shape><o:p></o:p>
<v:shape id="_x0000_i1032" type="#_x0000_t75" alt="" style="WIDTH: 7.5pt; HEIGHT: 0.75pt"><v:imagedata o:href="http://www.ibm.com/i/c.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>
|
请注意 JDK 的版本<o:p></o:p>
JUnit 4.1 是基于 Java 5 的升级版本,它使用了 Tiger 中的很多新特性来简化原有的使用方式。正因为如此,它并不能直接运行在 JDK1.4.x 版本上。如果您需要在 JDK1.4.x 版本使用 JUnit 的话,请使用 <st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899">3.8.1</st1:chsdate> 版本。<o:p></o:p>
|
<o:p></o:p>
|
可以开始编写单元测试了吗?等等……,您打算把单元测试代码放在什么地方呢?把它和被测试代码混在一起,这显然会照成混乱,因为单元测试代码是不会出现在最终产品中的。建议您分别为单元测试代码与被测试代码创建单独的目录,并保证测试代码和被测试代码使用相同的包名。这样既保证了代码的分离,同时还保证了查找的方便。遵照这条原则,我们在项目 coolJUnit 根目录下添加一个新目录 testsrc,并把它加入到项目源代码目录中(加入方式见 图2)。<o:p></o:p>
图2 修改项目源代码目录
<v:shape id="_x0000_i1033" type="#_x0000_t75" alt="图2 修改项目源代码目录" style="WIDTH: 414.75pt; HEIGHT: 327pt"><v:imagedata o:href="http://www.ibm.com/developerworks/cn/java/j-lo-junit4/figure002.jpg" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image008.jpg"></v:imagedata></v:shape><o:p></o:p>
现在我们得到了一条 JUnit 的最佳实践:单元测试代码和被测试代码使用一样的包,不同的目录。<o:p></o:p>
一切准备就绪,一起开始体验如何使用 JUnit 进行单元测试吧。下面的例子来自笔者的开发实践:工具类 WordDealUtil 中的静态方法 wordFormat4DB 是专用于处理 Java 对象名称向数据库表名转换的方法(您可以在代码注释中可以得到更多详细的内容)。下面是第一次编码完成后大致情形:<o:p></o:p>
package com.ai92.cooljunit;<o:p></o:p>
<o:p> </o:p>
import java.util.regex.Matcher;<o:p></o:p>
import java.util.regex.Pattern;<o:p></o:p>
<o:p> </o:p>
/**<o:p></o:p>
* 对名称、地址等字符串格式的内容进行格式检查<o:p></o:p>
* 或者格式化的工具类<o:p></o:p>
* <o:p></o:p>
* @author Ai92<o:p></o:p>
*/<o:p></o:p>
public class WordDealUtil {<o:p></o:p>
<o:p> </o:p>
/**<o:p></o:p>
| |
分享到:
相关推荐
单元测试是软件开发过程中的重要环节,它能帮助开发者确保代码的质量和稳定性。JUnit4作为Java平台上最流行的单元测试框架,极大地简化...阅读《单元测试利器JUnit4.pdf》文档将更深入地理解这些概念,并提供实践指导。
单元测试利器 JUnit 4 完整实例图解 做测试的必看的文档 希望对您有帮助
JUnit 4单元测试利器 本文主要介绍了如何使用JUnit 4提供的各种功能开展有效的单元测试,并通过一个实例演示了如何使用Ant执行自动化的单元测试。下面是从中生成的相关知识点: 1. JUnit 4简介:JUnit是Java社区中...
在开始使用 JUnit 4 进行单元测试之前,确保你有以下软件: 1. Eclipse:一个流行的集成开发环境(IDE),它内置了对 JUnit 的支持。 2. Ant:一个基于 Java 的构建工具,用于自动化构建和测试过程。 3. JUnit:可以...
junit3 junit4 api,单元测试的利器
### 单元测试利器JUnit4 #### 引言 单元测试是软件开发过程中不可或缺的一环,它能够确保代码的质量和稳定性。JUnit作为Java社区中最具影响力的单元测试框架之一,自1997年由Erich Gamma和Kent Beck共同开发以来,...
《Junit4:Java开发中的单元测试利器》 在Java编程世界中,单元测试是确保代码质量、可维护性和稳定性的重要工具。而Junit4,作为最广泛使用的Java单元测试框架,为开发者提供了强大且易用的测试能力。本文将深入...
总之,JUnit4.10作为软件测试的重要工具,通过其丰富的特性和便捷的API,极大地提升了测试效率和代码质量,是Java开发者不可或缺的测试利器。无论是初学者还是经验丰富的开发者,都应该掌握并熟练运用JUnit进行有效...
NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下来我所用的都是基于这个版本. NUnit最初是由James W. Newkirk...
《Java单元测试利器:JUnit5》 在Java开发过程中,单元测试是不可或缺的一环,它能够帮助我们确保代码的质量和稳定性。JUnit5作为最流行的Java单元测试框架之一,深受开发者喜爱。本文将深入探讨JUnit5的基本概念、...
Junit4 作为 Java 程序开发中必备的测试利器,现在最常用的就是 Junit4。Junit4 中所有的测试用例都使用了注解的形式,这比 Junit3更加灵活与方便。在 Junit4 中,我们可以使用@BeforeClass、@Before、@Test、@After...
NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下来我所用的都是基于这个版本. NUnit最初是由James W. Newkirk...
《深入理解JUnit 4.7:Java开发中的单元测试利器》 JUnit是Java开发者进行单元测试最常用的工具之一,尤其在版本4.7中,它提供了丰富的功能和改进,使得测试更加高效、易于理解和维护。本文将深入探讨JUnit 4.7的...
Ant和JUnit作为Java开发中的两大利器,分别在构建管理和单元测试方面发挥着重要作用。本文将深入探讨Ant 4版本与JUnit的结合使用,帮助开发者更好地理解和应用这两个工具。 Ant是一个开源的Java构建工具,它使用XML...
《Java单元测试利器:Junit 4.12.jar详解》 在软件开发过程中,单元测试是确保代码质量的关键步骤。对于Java开发者来说,Junit是进行单元测试的首选工具,而`junit-4.12.jar`则是这个工具的核心组件。本文将深入...
《Junit3.8.1:敏捷Java学习中的测试利器》 在软件开发领域,单元测试是确保代码质量的关键步骤之一。JUnit作为Java语言最常用的单元测试框架,为开发者提供了便利的测试工具。本文将围绕“Junit3.8.1”这个版本,...