Ant工程执行测试后的目录结构如下:
构建文件(build.xml),有中文可能会报错
<?xml version="1.0"?> <project name="secondbuild" default="compile"> <!--test class name--> <property name="test.suite" value="org.antbook.service.StudentServiceTest" /> <property environment="env" /> <echo>test=${env.JAVA_HOME}</echo> <target name="init"> <mkdir dir="build/classes" /> <mkdir dir="build/test/classes" /> <mkdir dir="dist" /> <mkdir dir="build/test/data" /> <mkdir dir="build/test/report" /> </target> <target name="clean" > <delete dir="build" /> <delete dir="dist" /> </target> <target name="compile" depends="init"> <javac srcdir="src" destdir="build/classes" /> </target> <!--test compile:需要build/classes目录中的class文件,因为测试代码使用的源码--> <target name="test-compile" depends="init,compile"> <javac destdir="build/test/classes"> <src path="test" /> <classpath refid="test.compile.classpath" /><!--使用了build/classes中的class--> </javac> </target> <!--junit test--> <target name="junit" depends="test-compile" > <junit> <classpath refid="test.run.classpath" /> <test name="${test.suite}" /> <test name="org.antbook.service.EventServiceTest" /> </junit> </target> <!--batch junit test, report--> <target name="batch-junit-test" depends="test-compile" > <!--测试失败后并不会直接跳到<fail>任务,<target>中的任务是顺序执行的--> <junit printsummary="yes" haltonfailure="false" errorProperty="test.failed" failureProperty="test.failed"> <classpath refid="test.run.classpath" /> <formatter type="xml" /> <!--格式化格式化器--> <batchtest fork="yes" todir="build/test/data"><!--生成的xml测试报告存放的位置--> <fileset dir="build/test/classes" includes="**/*Test.class" /> </batchtest> </junit> <!--应该放到<fail>任务之前,这样才会根据xml产生html文档--> <junitreport todir="build/test/data"> <!--将TESTS-TestSuites.xml文件存放于该目录--> <fileset dir="build/test/data"> <!--根据这些xml文件生成TESTS-TestSuites.xml(固定),打开TESTS-TestSuites.xml文件可以看见该文件包含了这些xml中的信息--> <include name="TEST-*.xml"/> </fileset> <report format="frames" todir="build/test/report" /> <!--Ant会根据TESTS-TestSuites.xml(固定)生成html测试报告--> </junitreport> <!--如果名为test.failed的特征存在,则输出异常信息--> <fail if="test.failed"> Test failed......................... </fail> <!--如果<fail>任务后面有任务 都不会被执行,但是在<fail>任务前面的任务还会被继续执行--> <echo>test print....</echo> </target> <!--compile classpath--> <path id="compile.classpath" > <fileset dir="lib"> <include name="*.jar" /> </fileset> </path> <!--run classpath--> <path id="run.classpath"> <path refid="compile.classpath" /> <pathelement path="build/classes" /> </path> <!--test compile classpath--> <path id="test.compile.classpath"> <path refid="compile.classpath" /> <pathelement path="build/classes" /> </path> <!--test run classpath--> <path id="test.run.classpath"> <path refid="test.compile.classpath" /> <pathelement path="build/test/classes" /> </path> </project>