リリース前に単体テスト全実行

PerlCPANモジュールはインストール時にmake testで単体テストを全実行しますが、Java単体テストを全実行したいという場合、antのタスクを作って組み込みます。

説明を付したタスクのサンプルが以下のような感じになります。

<target name="maketest">

	<!-- 準備 -->
	<delete dir="test" failonerror="false" />
	<mkdir dir="test/classes" />
	<mkdir dir="test/result" />

	<!-- テストクラスのコンパイル -->
	<javac srcdir="src/test/java" destdir="test/classes"
		target="1.5" encoding="UTF-8" deprecation="on" optimize="off" debug="on">
		<!-- クラスパス設定 -->
		<classpath>
			<!-- テスト対象のclassを含める -->
			<pathelement path="build/classes" />
			<!-- コンパイルに必要なjarを含める -->
			<fileset dir="lib">
				<include name="**/*.jar" />
			</fileset>
		</classpath>
	</javac>

	<!-- テストに必要なリソースをコピー -->
	<copy todir="/src/test/resources">
		<fileset dir="test/classes">
			<include name="**/*" />
		</fileset>
	</copy>
	
	<!-- テスト全実行 -->
	<junit>
		<!-- テスト結果出力フォーマット -->
		<formatter type="xml"/>
		<!-- クラスパス設定 -->
		<classpath>
			<!-- テスト対象 -->
			<pathelement path="build/classes" />
			<!-- テストクラス -->
			<pathelement path="test/classes" />
			<!-- 必要なjarファイル -->
			<fileset dir="lib">
				<include name="**/*.jar" />
			</fileset>
		</classpath>
		<!-- 指定したテストをバッチで全実行 -->
		<!-- ※テストが通らないとリリースできないように設定(halton〜)-->
		<batchtest todir="test/result" fork="yes" 
			haltonerror="true" haltonfailure="true">
			<fileset dir="${src_test_java_dir}">
				<include name="**/*Test.java"/>
			</fileset>
		</batchtest>
	</junit>
	
	<!-- テスト結果をHTMLのレポートに変換 -->
	<junitreport>
		<fileset dir="${test_result_dir}">
			<include name="TEST-*.xml"/>
		</fileset>
		<report format="frames" todir="test/result"/>
	</junitreport>

</target>

出力したテスト結果の例は以下のような感じになります。

http://seratch.net/works/java/unittest/java-simple-fh/0.0.1/

私は上記くらいで十分かなという感じですが、「djUnitカバレッジで出したい!」という場合は、以下のページの説明のようにすると出来るようです。

http://works.dgic.co.jp/djwiki/Viewpage.do?pid=@616E74E381A7646A556E6974E38292E4BDBFE38186


追記:(11/03)

つ、mavenって事ですか。

そうじゃない環境の場合、上記のようにantでやるという用途はありそうですが。