JUnit in Action Second Edition-20130911

ch09-ant

 

首先下载ant包,配置ANT_HOME变量,将%ANT_HOME%\bin加入PATH中。为了方便,将junit.jar放入%ANT_HOME%\lib中

如果junit的版本是4.8之后,还需要放入hamcrest-core-1.3.jar

 

build.xml构建文件

<!--指定项目名称,设定默认的任务,设定基目录的绝对路径-->
<project name="ch09-ant" default="test" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
	<!--引入属性文件-->
	<property file="build.properties" /><!---->
	<!--定义产品和测试的java源文件路径-->
	<property name="src.dir" location="src" />
	<property name="src.java.dir" location="${src.dir}/java" />
	<property name="src.test.dir" location="${src.dir}/test" />
	<!--定义产品和测试的java编译文件路径-->
	<property name="target.dir" location="target" />
	<property name="target.classes.java.dir" location="${target.dir}/classes/java" />
	<property name="target.classes.test.dir" location="${target.dir}/classes/test" />
	<!--定义测试结果报告文件路径-->
	<property name="target.report.dir" location="${target.dir}/report" />

	<!--定义产品的javac任务-->
	<target name="compile.java">
		<!--创建目录-->
		<mkdir dir="${target.classes.java.dir}" />
		<javac destdir="${target.classes.java.dir}" includeantruntime="true">
			<src path="${src.java.dir}" />
		</javac>
	</target>
	<!--定义测试的javac任务-->
	<target name="compile.test" depends="compile.java">
		<!--创建目录-->
		<mkdir dir="${target.classes.test.dir}" />
		<javac destdir="${target.classes.test.dir}" includeantruntime="true">
			<src path="${src.test.dir}" />
			<classpath>
				<pathelement location="${target.classes.java.dir}" />
			</classpath>
		</javac>
	</target>

	<target name="compile" depends="compile.java,compile.test" />
	<!--创建测试任务-->
	<target name="test" depends="compile">
		<!--创建测试结果报告目录-->
		<mkdir dir="${target.report.dir}" />
		<!--printsummary="yes"会使任务在测试的最后会输出一个单行的摘要-->
		<!--fork="yes"可以强制为每个测试使用一个独立的JVM,这是非常有必要的因为我们不希望测试结束的时候应用程序也被关闭了-->
		<!--haltonerror和haltonfailure="yes"表明如果任何结果测试返回一个错误或者一个失败就停止构建-->
		<!--在Ant中错误是指意料之外的错误,类似于异常,而失败是指失败的断言-->
		<junit printsummary="yes" haltοnerrοr="yes" haltonfailure="yes" fork="yes">
			<!--配置junit任务的格式程序来使用纯文本格式,并将测试结果输出到控制台-->
			<formatter type="plain" usefile="false" />
			<!--配置junit任务以XML文件格式输出结果-->
			<formatter type="xml" />
			<test name="com.manning.junitbook.ch09.ant.TestDefaultController" todir="${target.report.dir}" />
			<!--在类路径中添加刚刚编译的产品类和测试类-->
			<classpath>
				<pathelement location="${target.classes.java.dir}" />
				<pathelement location="${target.classes.test.dir}" />
			</classpath>
		</junit>
	</target>

	<!--使用XSL将XML格式的测试结果转换为HTML报告-->
	<target name="report" depends="test">
		<mkdir dir="${target.report.dir}/html" />
		<junitreport todir="${target.report.dir}">
			<fileset dir="${target.report.dir}">
				<include name="TEST-*.xml" />
			</fileset>
			<report todir="${target.report.dir}/html" />
		</junitreport>
	</target>
</project>


在eclipse中运行test任务 报错

[junitreport] : Error! 非 static Java 函数 'replace' 的第一个参数不是有效的对象引用。
[junitreport] : Error! 无法将数据类型 'void' 转换为 'reference'。
[junitreport] : Fatal Error! 无法编译样式表

选中build.xml右键Run As==>External Tools Configuration==>classpath中设置自己的Ant Home

我的Ant Home中另外加了junit-4.11.jar , hamcrest-core-1.3.jar ,ivy-2.3.0.jar

 

在执行,报错说找不到hamcrest-core-1.3.jar ,明明已经放入classpath中了。无奈使用iv管理依赖项

ivy.xml

<?xml version="1.0"?>
<ivy-module version="2.0">
    <info organisation="junitbook" module="sampling-ivy"/>
    <dependencies>
        <dependency org="junit" name="junit" rev="4.11"/>
    </dependencies>
</ivy-module>

在只用ivy之后,归档文件会保存在项目的lib文件中

在build.xml中加入

<property name="lib" location="lib" />
	<path id="build.classpath">
		<fileset dir="${lib}">
			<include name="*.jar" />
		</fileset>
	</path>

	<ivy:retrieve file="ivy.xml" sync="true" />


然后为各个任务增加classpath

<classpath refid="build.classpath" />


执行,成功,生成html格式的报告

 

在执行多个测试类时,可以使用批处理测试简化操作

将test标签替换为batchtest

 <batchtest todir="${target.report.dir}">
        <fileset dir="${src.test.dir}">
          <include name="**/${tests}.java"/>
          <exclude name="**/Test*All.java"/>
        </fileset>
  </batchtest>


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值