整合单元测试的自动化 :: zdon技术笔记

来源: BlogBus 原始链接: http://bpnrtech.blogbus.com:80/logs/2004/11/499260.html 存档链接: https://web.archive.org/web/20060216094433id_/http://bpnrtech.blogbus.com:80/logs/2004/11/499260.html


zdon技术笔记 积累是为了什么? <<<Hibernate的最佳实践(zz自Reference) | 首页 | apache下禁止以文件列表的形式出现在浏览器里的设置方法- ->>> 2004-11-16 整合单元测试的自动化 整合单元测试的自动化 注:没有对 ant 和 junit 的使用进行阐述 我们也做单元测试,一般来说都是在类刚刚写完,或责被修改成时进行的。但是很少做整合性的单元测试(整个项目的单元测试同时进行),由此带来的问题是,当修改了某个类后,该类本身测试也许通过,但是不一定调用者都能通过,但是一般我们很难知道这个类被哪些类调用了,而且时间一长将很难查找问题所 , 而且这个问题在接口整合的时候尤其明显,一般接口使用者在出现问题的时候首先考虑的是自己的代码出了问题,这样将大大延长解决问题的时间。 在软件开发的单元测试部分,很多程序员都会在 main 里面写测试用例(我也是),来对各个方法进行测试,但随着程序越变越大,这种开发方法很快就开始显现出了缺陷。 混乱 类接口越多, main() 就越大。而且有时候很多方法是不能一起被执行的,而且很多测试代码在测试完后可能就已经被删除了。 代码膨胀 在 main() 里面保留测试代码是个好习惯,由于加入了测试,所以产品代码比所需要的要大。但我不想在交付产品的时候包含测试代码 测试不可靠 既然 main() 是代码的一部分, main() 就对其他开发者通过类接口无法访问的私有成员和方法享有访问权。出于这个原因,这种测试方法就算测试通过也存在危险。 很难自动测试 每个类都有一个 main() ,很难实现集成自动化测试。 所以我们必须要对测试从 main 函数里进行分离,利用 junit 可以很容易做到这一点 .junit 可以为每一个类实现测试用例,然后用测试套件集成这些测试用例进行单元测试,再结合 ant 就可以实现整合单元测试的自动化。 下面结合一个具体例子来说明 ant+junit 的测试过程 准备工作 利用 ant 和 JUnit 自动化单元测试 下载和安装 Ant 首先下载 Ant ;将 Ant bin 目录添加到路径中;然后添 ANT_HOME 。 下载和安装 JUnit 下载 JUnit 3.2, 并将 junit.jar 添加到 CLASSPATH 或者将其拷贝到 ant/lib 目录下(这个很重要)。 工程目录结构 我们从 cvs 中拿下一个工程(工程目录如下),然后创建 build.xml 如下,测试目标:编译 j2sc 下的类到 build/classess 文件夹 , 然后对 build/classess 下所有的测试用例进行测试 , 生成测试报告,以上动作全部自动完成。(如何写测试用例这里不讨论)。 运行测试 具体配置和步骤 build.xml 文件 <project name= "ExampleTest" default= "unit" basedir= "."

<target name= "init" depends= "clean"

<target name= "compile" depends= "init" description= "compile the source "

<javac srcdir= "${src}" destdir= "${build}/classes"