Ant与Junit结合

一个简单的Java项目里面有Junit测试类,文件结构:如下图(图片在附件里)
src为源码目录
test为测试源码目录
junit_test.xml为ant脚本
junit_test02.xml为ant脚本
junit_test03.xml为ant脚本(该项目用的这个ant脚本)
readme.txt里面有一点说明

将下面的压缩包,down下来后,解压到任意位置。

运行步骤:
1、打开命令行,进到刚解压的根目录(能看到junit_test03.xml的目录)
2、在命令行中,输入:ant -f junit_test03.xml,即可。

里面,junit_test03.xml文件中,对Ant执行Junit任务,有比较详细的说明

<?xml version="1.0" encoding="gbk" ?>
<project name="junit_application" basedir="." default="test-basic">
<description>Ant'test with Junit</description>

<property environment="env"/>

<!-- 使用TestSuite,测试所有需要测试的TestCase的子类-->
<property name="test.suite" value="d1.core.test.AllTests"/>

<property name="build.dir" location="build"/>
<property name="src.dir" location="src"/>
<property name="src.build" location="${build.dir}/classes"/>
<property name="test.src.dir" location="test"/>
<property name="test.dir" location="${build.dir}/test"/>
<property name="test.build" location="${build.dir}/test/classess"/><!-- test.classes.dir-->
<property name="test.data.dir" location="${test.dir}/data"/>
<property name="test.reports.dir" location="${test.dir}/reports"/>

<property name="test.debug" value="on"/>

<!-- compile.classpath-->
<path id="junit.classpath" location="${env.ANT_HOME}/lib/junit-3.8.2.jar"/>

<!-- test.compile.classpath-->
<path id="test.classpath">
<!--<pathelement path="%ANT_HOME%/lib/junit-3.8.2.jar"/>-->
<path refid="junit.classpath"/>
<pathelement path="${src.build}"/><!-- test编译时,用到src编译目录下的类-->
</path>

<path id="test.run.classpath">
<path refid="test.classpath"/>
<pathelement path="${test.build}"/><!-- test执行,指向要用到test编译目录下的类-->
</path>

<!-- 将${test.data.dir}目录下的所有以"TEST-"打头的xml文件,转化为HTML文件,并存放到${test.reports.dir}目录下-->
<target name="report_exchange_to_html" description="将产生的xml报告,转化成Html">
<!-- <junitreport>标签有两个属性:tofile与todir
tofile:将之前junit产生的xml格式结果,聚集在一起,形成一个总的xml(这里,只是聚集后文件的名称,缺省是用的Test-TestSuites.xml)
-->
<junitreport todir="${test.data.dir}">
<fileset dir="${test.data.dir}">
<include name="TEST-*.xml"/>
</fileset>

<!-- <report>标签有三个属性:format、styledir以及todir
format:两种frames与noframes
styledir:使用缺省,在%ANT_HOME%/lib/ant-junit.jar里
todir:存放转换后的html结果目录
-->
<report format="frames" todir="${test.reports.dir}"/>
</junitreport>
</target>

<target name="test-basic" depends="test-compile" description="测试TestCase">
<echo>Ant's location is ${env.ANT_HOME}</echo>

<!-- 如果<junit>标签下,既有<test>标签又有<batchtest>标签,它们均会执行-->
<!-- 设置errorproperty与failureproperty属性,是为了,当在测试时,如遇到error或failure时,就在产生报告后,停止build-->
<!-- 这里,用了fork、forkmode以及maxmemory属性,是让Ant运行与测试运行,使用不同的JVM,让它们的效率高一点-->
<junit errorproperty="test.failed"
failureproperty="test.failed"
fork="true"
maxmemory="256M"
forkmode="perBatch">
<classpath refid="test.run.classpath"/>

<!-- 这里,<sysproperty>标签相当于,命令行中,使用 -D 命令(为属性赋值),当然,这是在新的JVM里-->
<sysproperty key="test.url" value="http://localhost:8080/"/>
<sysproperty key="debug" value="true"/>
<sysproperty key="data.dir" file="./data"/>

<!-- 当程序中,有用到assert时,我们可以在这里设置,哪些包的哪些类的assert有效与无效
本配置:说明,除包d1.core下的类Events中的assert失效外,其它的都有效
-->
<assertions enableSystemAssertions="true">
<enable/>
<enable package="d1.core"/>
<disable class="d1.core.Events"/>
</assertions>

<!-- Junit测试报告输出格式:三种 brief、plain与xml-->
<!-- usefile="true"后,控制台将不会有信息输出,它将输出到指定的目录下-->
<!-- classname属性与type属性,任选其一,其中classname,由包名+类名,如:classname="org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"
extension属性,表示后缀名
-->
<formatter type="brief"
extension=".html"
usefile="true"/><!-- 缺省时,报告文件后缀名为.txt-->

<formatter type="xml"/><!-- 缺省时,报告文件后缀名为.xml-->

<!-- 一个<test>标签只能,测试一个,
如果想测试多个,可以写多个<test>标签,但是它的效率比<batchtest>低 -->
<!-- 输出Junit测试报告:outfile为文件名(缺省时,由"Test-"与name属性组成),todir为报告目录,以及上面的,
extension为报告后缀名(缺省时,就为相应JunitResultFormmater接口的实现类指定的后缀名)-->
<test name="${test.suite}" outfile="Test-${test.suite}" todir="${test.reports.dir}"/>

<!-- <batchtest>标签,可以测试多个test-->
<batchtest todir="${test.data.dir}">
<fileset dir="${test.build}">
<include name="**/test/*Test.class"/>
</fileset>
</batchtest>
</junit>

<!-- 将xml报告,转化为HTML-->
<antcall target="report_exchange_to_html"/>

<!-- 当测试有error或failure时,就停止build-->
<fail if="test.failed">
Test is failed. Check ${test.reports.dir}
</fail>

<echo>测试失败后,还能执行到这里来吗???Check to ${test.reports.dir}</echo>

</target>

<target name="test-compile" depends="init" description="编译程序">
<!-- 编译src与test-->
<javac srcdir="${src.dir}"
destdir="${src.build}"
debug="${test.debug}">
</javac>
<javac srcdir="${test.src.dir}"
destdir="${test.build}"
debug="${test.debug}">
<classpath refid="test.classpath"/>
</javac>
</target>

<target name="init" depends="cleanup" description="初始化">
<mkdir dir="${src.build}"/>
<mkdir dir="${test.build}"/>
<mkdir dir="${test.data.dir}"/>
<mkdir dir="${test.reports.dir}"/>
</target>

<target name="cleanup" description="清理。。。">
<delete dir="${build.dir}"/>
</target>

</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值