ユニットテスト実行用のAnt用ビルドファイル(build.xml)

以前に書きましたが、Hudsonを使って、
ユニットテストを自動実行するにはJavaならAntが必要です。
(Hudsonの設定画面でAnt実行を設定します)


Antとは「一連の処理を自動化するためのツール」です。
Eclipse上やコマンドラインから実行します。
Antを実行するには、一連の処理を定義したbuild.xmlが必要です。


ユニットテスト用のbuild.propertiesとbuild.xmlを汎用的に使えるようにしてみました。
各環境に応じてbuild.propertiesの定義値を変更すれば、そのまま使えると思います。


 1.ディレクトリをクリア
 2.コンパイル
 3.JARファイル作成
 4.ユニットテスト実行


 ant build で 1,2,3を実行します。
 ant build-unitTest で 1,2,3,4を実行します。


■build.properties

###################################################
# ディレクトリ定義
###################################################
# ソースファイル格納ディレクトリ
src.dir=src
# テストソースファイル格納ディレクトリ
test.dir=testsrc
# スタブソース格納ディレクトリ
stub.dir=stubsrc
# クラスファイル格納ディレクトリ
class.dir=bin
# ライブラリ格納ディレクトリ
lib.dir=lib
# テスト用ライブラリ格納ディレクトリ
test.lib.dir=testlib
# JARファイル格納ディレクトリ
jar.dir=jar
# 設定ファイル格納ディレクトリ
conf.dir=conf
# 画像ファイル格納ディレクトリ
img.dir=img
# テスト結果ファイル格納ディレクトリ
report.dir=report

###################################################
# ファイル定義
###################################################
# JARファイル名
jar.name=HOGEHOGE.jar

###################################################
# コンパイル定義
###################################################
# ソースファイルのエンコーディング
src.encoding=UTF8

###################################################
# JARファイル作成定義
###################################################
# JARファイルに含めるファイル
create.jar.src.dir.includes=**/*.xml, **/*.properties

###################################################
# テスト用JARファイル作成定義
###################################################
# テスト用JARファイルに含めるファイル
create.TEST-jar.class.dir.includes=**/*Test*, **/Xls*, **/Stub*

###################################################
# ユニットテスト実行定義
###################################################
# ユニットテスト対象のソースファイル
unitTest.test.dir.include=**/*Test.java
# ユニットテスト対象外のソースファイル
unitTest.test.dir.exclude =**/TestBase.java


build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="UnitTestProject" default="build" basedir=".">

  <!-- ========================================================== -->
  <!-- 定義値 -->
  <!-- ========================================================== -->

  <!-- プロパティファイル名 -->
  <property file="build.properties" />
    
  <!-- ソース参照 -->
  <path id="build.src">
    <pathelement path="${src.dir}" />
    <pathelement path="${test.dir}" />
    <pathelement path="${stub.dir}" />
    <!-- 【プロジェクト参照をする場合はココにソース参照を追加】 -->
  </path>
  
  <!-- ライブラリ参照 -->
  <path id="build.classpath">
    <fileset dir="${lib.dir}" includes="**/*" />
    <fileset dir="${test.lib.dir}" includes="**/*" />
    <!-- 【プロジェクト参照をする場合はココにライブラリ参照を追加】 -->
  </path>

  <!-- ========================================================== -->
  <!-- Antタスク実行順序 -->
  <!-- ========================================================== -->
  <target name="build">
    <antcall target="clean" />
    <antcall target="compile" />
    <antcall target="create.jar" />
  </target>
  <target name="build-unitTest">
    <antcall target="clean" />
    <antcall target="compile" />
    <antcall target="create.jar" />
    <antcall target="unitTest" />
  </target>

  <!-- ========================================================== -->
  <!-- ディレクトリをクリア -->
  <!-- ========================================================== -->
  <target name="clean">
    <delete dir="${class.dir}" />
    <delete dir="${jar.dir}" />
    <delete dir="${report.dir}" />
    <mkdir dir="${class.dir}" />
    <mkdir dir="${jar.dir}" />
    <mkdir dir="${report.dir}" />
  </target>

  <!-- ========================================================== -->
  <!-- コンパイル -->
  <!-- ========================================================== -->
  <target name="compile">
    <javac destdir="${class.dir}" encoding="${src.encoding}" debug="on" includeAntRuntime="no" failonerror="false">
      <src refid="build.src" />
      <classpath refid="build.classpath" />
    </javac>
  </target>

  <!-- ========================================================== -->
  <!-- JARファイル作成 -->
  <!-- ========================================================== -->
  <target name="create.jar">
    <jar destfile="${jar.dir}/${jar.name}">
      <fileset dir="${src.dir}" includes="${create.jar.src.dir.includes}"/>
      <fileset dir="${class.dir}" excludes="${create.TEST-jar.class.dir.includes}"/>
    </jar>
    <jar destfile="${jar.dir}/TEST-${jar.name}">
      <fileset dir="${class.dir}" includes="${create.TEST-jar.class.dir.includes}"/>
    </jar>
  </target>
  
  <!-- ========================================================== -->
  <!-- ユニットテスト実行 -->
  <!-- ========================================================== -->
  <target name="unitTest">
    <junit fork="yes" maxmemory="512m" printsummary="on">
      <classpath location="${class.dir}" />
      <classpath refid="build.classpath" />
      <formatter type="xml" />
      <batchtest fork="yes" todir="${report.dir}">
        <fileset dir="${test.dir}">
          <include name="${unitTest.test.dir.include}" />
          <exclude name="${unitTest.test.dir.exclude}" />
        </fileset>
      </batchtest>
    </junit>
  </target>

</project>


スーパーpre記法 シンタックスハイライトの不都合?で、
XMLコメントが消えちゃうんで、とりあえずbuild.xmlはテキスト表示です(;´Д`)