Ant可以进行自动化建构,而JUnit可以进行自动化测试,Ant可以与JUnit结合,使得自动化的建构与测变得可行。
我们使用之前的测试案例来示范如何将Ant结合JUnit以进行自动化建构与测试,之前的测试案例是:
http://www.caterpillar.onlyfun.net/phpBB2/viewtopic.php?t=981
Ant使用<junit>任务来设定JUnit测试,下面直接示范一个简单的例子:
代码: |
<project name="autobuildtest" default="test"> <!--设置目录--> <target name="setProperties"> <property name="src.dir" value="src"/> <property name="classes.dir" value="classes"/> </target> <!--重置(清空)已编译目录--> <target name="prepareDir" depends="setProperties"> <delete dir="${classes.dir}"/> <mkdir dir="${classes.dir}"/> </target> <!--编译--> <target name="compile" depends="prepareDir"> <javac srcdir="./src" destdir="${classes.dir}"/> </target> <!--JUnit测试--> <target name="test" depends="compile"> <junit printsummary="yes"> <test name="ObjectIOManagerTest"/> <classpath> <pathelement location="${classes.dir}"/> </classpath> </junit> </target> </project> |
|
printsummary属性会将测试的结果简单的显示出来,<test>的name属性是设定要进行测试的案例类别,Ant建构与调用JUnit进行测试的讯息如下:
代码: |
Buildfile: build.xml
setProperties:
prepareDir: [mkdir] Created dir: D:/temp/classes
compile: [javac] Compiling 3 source files to D:/temp/classes
test: [junit] Running ObjectIOManagerTest [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.14 sec
BUILD SUCCESSFUL Total time: 7 seconds |
您也可以将JUnit的测试过程在Ant建构的过程讯息中显示出来,只要加入<formatter>标签设定即可:
代码: |
<project name="autobuildtest" default="test"> <target name="setProperties"> <property name="src.dir" value="src"/> <property name="classes.dir" value="classes"/> </target>
<target name="prepareDir" depends="setProperties"> <delete dir="${classes.dir}"/> <mkdir dir="${classes.dir}"/> </target>
<target name="compile" depends="prepareDir"> <javac srcdir="./src" destdir="${classes.dir}"/> </target>
<target name="test" depends="compile"> <junit printsummary="yes"> <formatter type="plain" usefile="false"/> <test name="ObjectIOManagerTest"/> <classpath> <pathelement location="${classes.dir}"/> </classpath> </junit> </target> </project> |
Ant建构与调用JUnit进行测试的讯息如下:
代码: |
Buildfile: build.xml
setProperties:
prepareDir: [mkdir] Created dir: D:/temp/classes
compile: [javac] Compiling 3 source files to D:/temp/classes
test: [junit] Running ObjectIOManagerTest [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.18 sec
[junit] Testsuite: ObjectIOManagerTest [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.18 sec [junit] ------------- Standard Output --------------- [junit] Writing data to test.dat ... done [junit] Reading data from test.dat ... done [junit] Writing data to test.dat ... done [junit] Reading data from test.dat ... done [junit] ------------- ---------------- ---------------
[junit] Testcase: testSimpleObjectIO took 0.09 sec [junit] Testcase: testStudentObjectIO took 0.08 sec
BUILD SUCCESSFUL Total time: 8 seconds |
<formatter>标签还可以设定将测试的结果,以XML文件储存下来,一个撰写的例子如下,它将测试的结果储存至report目录中,文件名称为TEST-*.xml,*是您的测试案例类别名称:
代码: |
<project name="autobuildtest" default="test"> <target name="setProperties"> <property name="src.dir" value="src"/> <property name="classes.dir" value="classes"/> <property name="report.dir" value="report"/> </target>
<target name="prepareDir" depends="setProperties"> <delete dir="${report.dir}"/> <delete dir="${classes.dir}"/> <mkdir dir="${report.dir}"/> <mkdir dir="${classes.dir}"/> </target>
<target name="compile" depends="prepareDir"> <javac srcdir="./src" destdir="${classes.dir}"/> </target>
<target name="test" depends="compile"> <junit printsummary="yes"> <formatter type="xml"/> <test name="ObjectIOManagerTest" todir="${report.dir}"/> <classpath> <pathelement location="${classes.dir}"/> </classpath> </junit> </target> </project> |
您也可以将测试结果所产生的XML文件转换为HTML文件,使用Ant可以直接帮您完成这个工作,<junitreport>标签使用XSLT将XML文件转换为HTML文件,一个撰写的例子如下所示:
代码: |
<project name="autobuildtest" default="report"> <target name="setProperties"> <property name="src.dir" value="src"/> <property name="classes.dir" value="classes"/> <property name="report.dir" value="report"/> </target>
<target name="prepareDir" depends="setProperties"> <delete dir="${report.dir}"/> <delete dir="${classes.dir}"/> <mkdir dir="${report.dir}"/> <mkdir dir="${classes.dir}"/> </target>
<target name="compile" depends="prepareDir"> <javac srcdir="./src" destdir="${classes.dir}"/> </target>
<target name="test" depends="compile"> <junit printsummary="yes"> <formatter type="xml"/> <test name="ObjectIOManagerTest" todir="${report.dir}"/> <classpath> <pathelement location="${classes.dir}"/> </classpath> </junit> </target>
<target name="report" depends="test"> <junitreport todir="${report.dir}"> <fileset dir="${report.dir}"> <include name="TEST-*.xml"/> </fileset> <report format="frames" todir="${report.dir}/html"/> </junitreport> </target> </project> |
<include>设定搜寻TEST-*.xml文件,将之转换为HTML文件,而最后的结果我们设定储存至report/html/目录下,format属性中我们设定HTML文件具有框架,如果不设定这个属性则HTML报告文件就不具有框架。
答复但是