四.使用Ant进行Junit测试
我们除了使用java来直接运行junit之外,我们还可以使用junit提供的junit task与ant结合来运行。涉及的几个主要的ant task如下:
l <junit>,定义一个junit task
l <batchtest>,位于<junit>中,运行多个TestCase
l <test>,位于<junit>中,运行单个TestCase
l <formatter>,位于<junit>中,定义一个测试结果输出格式
l <junitreport>,定义一个junitreport task
l <report>,位于<junitreport>中,输出一个junit report
运行Junit需要jakarta-ant-1.4-optional.jar和Junit.jar包,因为这两个包用于支持ant task--<junit>的,所以不能在build.xml文件中加载,需要将他们放到ANT_HOME中去.使用eclipse可以按照一下步骤加入:
Windows-Preference-Ant-Runtime-Ant Home Entries
下面看一个Junit测试的例子:
<?xml version="1.0"?>
<project name="project" default="junit">
<property name="run.classpath" value="bin"></property>
<property name="run.srcpath" value="src"></property>
<property name="test.srcpath" value="test"></property>
<property name="lib.dir" value="lib"/>
<path id="compile.path">
<pathelement location="${lib.dir}/junit-3.8.1.jar"/>
<pathelement location="${lib.dir}/log4j-1.2.8.jar"/>
</path>
<target name="compile">
<javac destdir="${run.classpath}" srcdir="${run.srcpath}"
classpathref="compile.path"/>
<javac destdir="${run.classpath}" srcdir="${test.srcpath}"
classpathref="compile.path"/>
</target>
<target name="junit" depends="compile">
<junit printsummary="true">
<classpath path="${run.classpath}"></classpath>
<test name="org.ant.test.Test1"></test>
</junit>
</target>
</project>
|
可以看出Junit的使用基本和java差不多, printsummary允许输出junit信息,当然Ant提供formatter属性支持多样化的junit信息输出.Ant包含三种形式的formatter:
brief:以文本格式提供测试失败的详细内容;
plain:以文本格式提供测试失败的详细内容以及每个测试的运行统计;
xml:以xml格式提供扩展的详细内容,包括正在测试时的Ant特性,系统输出,以及每个测试用 例的系统错误.
使用formatter时建议将printsummary关闭,因为他可能对formatter的生成结果产生影响,并多生成一份同样的输出.当然我们可以使用formatter将输出结果显示在console中:
<formatter type="brief" usefile="false"/>
Junit支持多个formatter同时存在:
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
使用xml我们可以得到扩展性更强的信息输出,这时在<test>中要设定todir来指定xml的输出路径.
在通常情况下我们不可能一个一个来处理junit,所以Ant提供了<batchtest>,可以在他里面嵌套文件集(fileset)以包含全部的测试用例.
对于大量的用例,使用控制台输出,或者使用文件或xml文件来作为测试结果都是不合适的,Ant提供了<junitreport>任务使用XSLT将xml文件转换为HTML报告.该任务首先将生成的XML文件整合成单一的XML文件,然后再对他进行转换,这个整合的文件默认情况下被命名为:TESTS-TestSuites.xml.
<junitreport todir="${test.xml}">
<fileset dir="${test.xml}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${test.report}"/>
</junitreport>
|
<report>元素指示转换过程中生成有框架(frames)或者无框架的类似与javadoc格式的文件,并保存到todir所在的目录下面.(由于xalan对于JDK1.4以上的版本存在问题,所以要生成HTML文件需要以下步骤:现在最新的xalan,在%JAVA_HOME%/jre/lib中建立文件夹endorsed.将xalan中的jar文件copy到里面).
下面看一个完整的例子:
<?xml version="1.0"?>
<project name="project" default="junit">
<property name="run.classpath" value="bin"></property>
<property name="run.srcpath" value="src"></property>
<property name="test.srcpath" value="test"></property>
<property name="test.xml" value="xml"></property>
<property name="test.report" value="report"></property>
<property name="lib.dir" value="lib"/>
<path id="compile.path">
<pathelement location="${lib.dir}/junit-3.8.1.jar"/>
<pathelement location="${lib.dir}/log4j-1.2.8.jar"/>
</path>
<target name="init">
<delete dir="${test.report}"/>
<mkdir dir="${test.report}"/>
<delete dir="${test.xml}"/>
<mkdir dir="${test.xml}"/>
</target>
<target name="compile" depends="init">
<javac destdir="${run.classpath}" srcdir="${run.srcpath}"
classpathref="compile.path"/>
<javac destdir="${run.classpath}" srcdir="${test.srcpath}"
classpathref="compile.path"/>
</target>
<target name="junit" depends="compile">
<junit printsummary="false">
<classpath path="${run.classpath}"></classpath>
<formatter type="xml"/>
<batchtest todir="${test.xml}">
|