首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Ant施行Junit

2012-12-21 
Ant执行JunitApache Ant简介简单的讲,Ant是一个命令行工具,可以用来编译java文件,执行java程序,生成jar文

Ant执行Junit
Apache Ant简介

简单的讲,Ant是一个命令行工具,可以用来编译java文件,执行java程序,生成jar文件,执行测试等。

具体参见http://ant.apache.org/

1.Ant的配置

(1)下载Ant

http://ant.apache.org/bindownload.cgi

下载解压后放在某路径下,例如:C:\apache-ant-1.8.2

(2)配置环境变量

追加系统环境变量:“ANT_HOME”,值:“C:\apache-ant-1.8.2”

在系统环境变量“Path”里追加“C:\apache-ant-1.8.2\bin”

(3)验证配置是否正确

在命令行输入“ant -version”

如果显示“Apache Ant(TM) version 1.8.2 compiled on December 20 2010”,说明正确

2.创建build.xml文件

用XML编写,至少包含一个project和一个target.

以下面这个build.xml为例说明

主要任务:

(1)正式source文件(src目录下)和Junit测试(test目录下)文件可以分别编译。

(2)生成jar文件,并且不包含测试文件。

(3)通过ant执行Junit测试,生成测试报告。

编写思路:

(1)根据上述任务,至少需要编写4个target

target1:compile,编译正式source文件

target2:testcomplile,编译test文件

target3:make-jar,生成jar文件

target4:runtests,执行junit测试

(2)辅助target

target5:JUNIT,执行Junit测试需要此target支持

target6:apidocs,生成javaDoc

target7:rmi-compile,编译RMI相关文件(工程中涉及到了RMI通信内容)。

特别说明:test目录下的测试文件与src的source文件是一一对应的,包结构完全一致。

主要目录结构

myproject
├─bin
├─config
├─image
├─lib
├─log
├─src
│  └─AAA
│      └─BBB
│          └─CCC
└─test
    └─AAA
        └─BBB
            └─CCC
               

----------------------------------------file start-------------------------------------------

<?xml version="1.0" encoding="Shift_JIS"?>

<!-- project tag
name   :工程名字
default:默认执行的target
basedir:ant执行的根目录-->
<project name="myproject" default="runtests" basedir=".">
<!-- source路径 -->
<property name="src.dir" value="src" />

<!-- 编译后class路径 -->
<property name="build.dir" value="classes" />

<!-- JavaDoc路径 -->
<property name="build.apidocs" value="${build.dir}/doc" />

<!-- 测试source路径
  test.dir   : JUnit执行路径
-->
<property name="testSrc.dir" value="test" />

<!-- test报告路径 -->
<property name="reports.dir" value="./doc/report" />

<!-- test结果统计路径 -->
<property name="correctreports.dir" value="${reports.dir}/html" />

<!-- target tag
  name         :target名字
  depends    :依赖target,先执行被依赖的target.
  description:target描述
-->
<target name="JUNIT">
     <available property="junit.present" classname="junit.framework.TestCase" />
</target>

<target name="compile" depends="JUNIT">
     <mkdir dir="${build.dir}"/>
  <depend srcdir="${src.dir}" destdir="${build.classes}"/>
  <javac srcdir="${src.dir}" destdir="${build.classes}">
   <classpath>
    <pathelement path="${build.classes}"/>
    <pathelement path="${java.class.path}/"/>
   </classpath>
   <include name="**/*.java"/>
  </javac>
</target>


<target name="testcompile" depends="compile">
  <depend srcdir="${testSrc.dir}" destdir="${build.classes}"/>

<!-- test class文件与正式class文件,输出到同一目录下

也就是说正式source和测试source的原文件(java文件)不同目录,但编译后的class文件同目录。

-->
  <javac srcdir="${testSrc.dir}" destdir="${build.classes}" fork="true" memoryMaximumSize="512m">
   <compilerarg value="-Xlint:unchecked"/>
   <classpath>
    <pathelement path="${build.classes}"/>
    <pathelement path="${java.class.path}/"/>
    <fileset dir="lib">
     <include name="*.jar"/>
    </fileset>
   </classpath>
   <include name="**/*.java"/>
  </javac>
</target>


<target name="rmi-compile" depends="compile">
  <rmic base="${build.classes}" verify="true">
   <classpath>
    <pathelement path="${build.classes}"/>
    <pathelement path="${java.class.path}/"/>
   </classpath>
   <include name="**/*.class"/>
   <exclude name="**/test/*.class"/>
  </rmic>
</target>

<target name="runtests" depends="testcompile">
  <delete>
   <fileset dir="${reports.dir}" includes="**/*" />
  </delete>
  <mkdir dir="${reports.dir}"/>

  <junit printsummary="on" failureProperty="fail">
   <classpath>
    <pathelement location="lib/***.jar" />
    <pathelement location="lib/***.jar" />
    <pathelement path="${build.classes}"/>
    <pathelement path="${java.class.path}/"/>
   </classpath>
  
   <formatter type="xml"/>

   <batchtest fork="yes" todir="${reports.dir}">
    <fileset dir="${src.dir}">
     <!-- 只执行test CLASS -->
     <include name="${test.dir}**/*Test.java" />
    </fileset>
   </batchtest>
  </junit>

  <junitreport todir="${reports.dir}">
   <fileset dir="${reports.dir}">
    <include name="TEST-*.xml"/>
   </fileset>

   <report format="frames" todir="${correctreports.dir}"/>
  </junitreport>
</target>

<!-- JavaDoc生成 -->
<target name="apidocs" depends="compile" description="JavaDoc生成">
  <javadoc sourcepath="${src.dir}" destdir="${build.apidocs}"
   packagenames="AAA.BBB.CCC.*"
   author="true"
   version="true"
   notree="true"
   nonavbar="true"
   noindex="true"
   windowtitle="MyProject API"
   doctitle="Regulation"
   public="true"
  />
</target>

<!-- Jar生成 -->
<target name="make-jar" depends="rmi-compile" description="Jar生成">
  <delete file="myproject.jar"/>
  <jar jarfile="myproject.jar" manifest="MANIFEST.MF">
   <fileset dir="classes">

<!--除去test文件-->
    <exclude name="**/test/"/>
   </fileset>
  </jar>
</target>
</project>

??????????????????????????--------------------------------------file end----------------------------------------------

3.执行build.xml

将build.xml放到myproject工程的根目录下。

控制台切换到myproject工程的根目录“C:\myproject”:

(1)编译正式source

C:\myproject>ant comlile

(2)编译测试文件

C:\myproject>ant testcompile

(3)生成jar文件,并且不包含测试文件。

C:\myproject>ant make-jar

(4)通过ant执行Junit测试,生成测试报告。

C:\myproject>ant runtest

热点排行