本文是转载的, 主要介绍 Junit 4 ( 搭建在 eclipse 中 )
JUnit4 初体验
- Eclipse: 下载
- Ant, 基于java的开源构建工具, 你可以在 http://ant.apache.org/ 上得到最新的版本和丰富的文档, eclipse 中已经集成了Ant, (要确认集成Ant的版本是否较高, 能够支持 Junit4)(新下载的eclipse应该没问题)
- JUnit, 官方 http://www.junit.org/ 如果你使用eclipse, 就不用单独下载JUnit了, 直接可以从eclipse中下载.
1. 引入 Junit
首先在 eclipse 中新建一个工程, 然后再工程的属性中, 找到 java Build Path, 在 libraries 中选择 Add Library…, 然后选择 Junit, 这样 Junit 就引入成功了. 注意 Junit 必须要有 java 5 的支持.
2. 测试与实际代码分离
以上的引入办法会将 Junit 放在你当前这个工程包中, 建议您分别为单元测试代码与被测试代码创建单独的目录,并保证测试代码和被测试代码使用相同的包名。这样既保证了代码的分离,同时还保证了查找的方便。遵照这条原则,我们在项目 coolJUnit 根目录下添加一个新目录 testsrc,并把它加入到项目源代码目录中。 添加方法, 还是找到 java Build Path, 右键configure, 然后在Source菜单页, 添加folder.(我确认了实际目录的情况, 切实在与src目录同一个层下(即同一个目录下)又添加了一个目录testsrc)
一切准备就系, 下面就可以开始测试了
用例:
首先, 我们创建一个 class, 编辑class 创建方法 等, 然后我们创建 JUnit, 只要选中这个class, 然后点 File->new->Junit test case 就可以自动生成框架( 这里要注意, 选择一下针对 JUnit 的文件夹, 使用跟前面我们创建的class 相同的包 ) 就会生成如下代码: 例如:
package coolUnit; import static org.junit.Assert.*; import org.junit.Test; public class WordDealUtilTest { @Test public void testWordFormat4DB() { fail("Not yet implemented"); } }
然后, 我们修改这个测试方法:
package coolUnit; import static org.junit.Assert.*; import org.junit.Test; public class WordDealUtilTest { @Test public void testWordFormat4DB() { String target = "employeeInfo"; String result = WordDealUtil.wordFormat4DB(target); assertEquals("employee_info", result); } }
如果以后, 我们又增加了新的方法, 只需要在这个类里边任意copy一个测试方法, 并将方法名改成test+新的方法名就可以了.
assertEquals 是由 JUnit 提供的一系列判断测试结果是否正确的断言方法(位于类 org.junit.Assert中)
接下来, 我们可以运行了, 在测试类上右键->Run as Junit Test, 就会得到结果
测试方法必须书写规范:
测试方法必须使用注解 org.junit.Test 修饰
测试方法必须使用 public void 修饰, 而且不能带有任何参数.
测试要针对, 边界值, null, 一般值, 错误值等进行
Junit 失败的情况: (两种 failure, error)
如果测试的结果失败: Failure, 表示函数处理得到的结果与预期的结果不相等.
如果测试出现异常: Error, 表示在程序中抛出异常, 可能是对 null 处理等时候.
高级深入
Fixture( 目前不用 )
何谓 Fixture ?它是指在执行一个或者多个测试方法时需要的一系列公共资源或者数据,例如测试环境,测试数据等等。在编写单元测试的过程中,您会发现在大部分的测试方法在进行真正的测试之前都需要做大量的铺垫——为设计准备 Fixture 而忙碌。这些铺垫过程占据的代码往往比真正测试的代码多得多,而且这个比率随着测试的复杂程度的增加而递增。当多个测试方法都需要做同样的铺垫时,重复代码的“坏味道”便在测试代码中弥漫开来。这股“坏味道”会弄脏您的代码,还会因为疏忽造成错误,应该使用一些手段来根除它。
JUnit 专门提供了设置公共 Fixture 的方法,同一测试类中的所有测试方法都可以共用它来初始化 Fixture 和注销 Fixture。和编写 JUnit 测试方法一样,公共 Fixture 的设置也很简单,您只需要:
- 使用注解 org,junit.Before 修饰用于初始化 Fixture 的方法。
- 使用注解 org.junit.After 修饰用于注销 Fixture 的方法。
- 保证这两种方法都使用 public void 修饰,而且不能带有任何参数。
遵循上面的三条原则,编写出的代码大体是这个样子
这样,在每一个测试方法执行之前,JUnit 会保证 init 方法已经提前初始化测试环境,而当此测试方法执行完毕之后,JUnit 又会调用 destroy 方法注销测试环境。注意是每一个测试方法的执行都会触发对公共 Fixture 的设置,也就是说使用注解 Before 或者 After 修饰的公共 Fixture 设置方法是方法级别的(图 5)。这样便可以保证各个独立的测试之间互不干扰,以免其它测试代码修改测试环境或者测试数据影响到其它测试代码的准确性。
http://www.ibm.com/developerworks/cn/java/j-lo-junit4/index.html
这里边有比较常用的关于 Junit 测试的内容
JUnit 和 Ant
随着项目的进展,项目的规模在不断的膨胀,为了保证项目的质量,有计划的执行全面的单元测试是非常有必要的。但单靠 JUnit 提供的测试套件很难胜任这项工作,因为项目中单元测试类的个数在不停的增加,测试套件却无法动态的识别新加入的单元测试类,需要手动修改测试套件,这是一个很容易遗忘得步骤,稍有疏忽就会影响全面单元测试的覆盖率。
当然解决的方法有多种多样,其中将 JUnit 与构建利器 Ant 结合使用可以很简单的解决这个问题。Ant —— 备受赞誉的 Java 构建工具。它凭借出色的易用性、平台无关性以及对项目自动测试和自动部署的支持,成为众多项目构建过程中不可或缺的独立工具,并已经成为事实上的标准。Ant 内置了对 JUnit 的支持,它提供了两个 Task:junit 和 junitreport,分别用于执行 JUnit 单元测试和生成测试结果报告。使用这两个 Task 编写构建脚本,可以很简单的完成每次全面单元测试的任务。
不过,在使用 Ant 运行 JUnit 之前,您需要稍作一些配置。打开 Eclipse 首选项界面,选择 Ant -> Runtime 首选项(见 图 7),将 JUnit 4.1 的 JAR 文件添加到 Classpath Tab 页中的 Global Entries 设置项里。记得检查一下 Ant Home Entries 设置项中的 Ant 版本是否在 1.7.0 之上,如果不是请替换为最新版本的 Ant JAR 文件。
具体的, 请参考上边网址详细查看.