使用ant脚本编译并运行junit单元测试,并生成测试报告

<?xml version="1.0" encoding="UTF-8"?>
<project default="create" basedir=".">
	<!-- 常用变量 -->
	<property name="project.name" value="junitant" />
	<property name="project.src" value="${basedir}/src" />
	<!--测试代码的位置 -->
	<property name="project.testsrc" value="${basedir}/testcase" />
	<property name="compile.version" value="1.6" />
	<property name="project-version" value="1.0" />
	<!--junit 测试报表输出 -->
	<property name="report.html" value="${basedir}/build/junit/html" />
	<property name="report.xml" value="${basedir}/build/junit/xml" />

	<!-- 删除上次编译的文件-->
	<target name="clean" description="delete build files">
		<delete dir="${basedir}/build" />
	</target>
	<!-- 创建目录-->
	<target name="init" description="create files" depends="clean">
		<mkdir dir="${basedir}/build/class" />
		<mkdir dir="${basedir}/build/testclass" />
	</target>

	<path id="classpath">
		<fileset dir="lib">
			<include name="*.jar" />
		</fileset>
	</path>

	<!--编译java源文件-->
	<target name="compile" description="complie java files" depends="init">
		<javac srcdir="${project.src}" destdir="${basedir}/build/class" source="${compile.version}" classpathref="classpath" encoding="UTF-8" />
		<!-- 编译test class,需要用到上面的class -->
		<javac srcdir="${project.testsrc}" destdir="${basedir}/build/testclass" source="${compile.version}" encoding="UTF-8">
			<classpath>
				<pathelement path="${basedir}/build/class" />
				<fileset dir="lib">
					<include name="**/*.jar" />
				</fileset>
			</classpath>
		</javac>
	</target>

	<!--junit-->
	<target name="junit" depends="compile">
		<mkdir dir="${report.html}" />
		<mkdir dir="${report.xml}" />
		<junit printsummary="yes" haltonfailure="no">
			<!-- jar和class -->
			<classpath>
				<pathelement path="${basedir}/build/class" />
				<pathelement path="${basedir}/build/testclass" />
				<fileset dir="lib">
					<include name="**/*.jar" />
				</fileset>
			</classpath>

			<formatter type="xml" />
			<batchtest todir="${report.xml}">
				<fileset dir="${basedir}/build/testclass">
					<include name="**/*Test.class" />
				</fileset>
			</batchtest>
		</junit>
		<junitreport todir="${report.html}">
			<fileset dir="${report.xml}">
				<include name="*.xml" />
			</fileset>
			<report format="frames" todir="${report.html}" />
		</junitreport>
	</target>

	<target name="copy-sources" depends="junit">
		<copydir dest="build/${project.name}/lib" src="lib" />
		<!--使用服务器上的配置
			forceoverwrite="true":  会覆盖文件
			<copydir dest="build/${project.name}/conf" src="sconf" forceoverwrite="true"/>
		-->
	</target>
	<!--创建jar -->
	<target name="create" depends="copy-sources">
		<!-- 通过文件名称组装jar的名称字符串-->
		<pathconvert property="mf.classpath" pathsep=" ./lib/">
			<path refid="classpath" />
			<flattenmapper />
		</pathconvert>
		<copydir dest="build/${project.name}/" src="build/${project.name}" />
		<jar basedir="build/class" destfile="build/${project.name}/${project.name}_${project-version}.jar">
		</jar>
	</target>
</project>

猜你喜欢

转载自lylin123.iteye.com/blog/1766215