テストケースを実行するターゲットのサンプル
テストを実行するターゲットを書きました。テストのコンパイル→実行→レポート作成を行ないます。
<!-- タスクで使用するプロパティ --> <!-- コンパイル用クラスパス --> <path id="class.compile.path"> </path> <!-- テストケースコンパイル用クラスパス--> <path id="test.compile.path"> <path location="lib/junit.jar"/> <path refid="class.compile.path" /> </path> <!-- テスト実行用クラスパス --> <path id="test.runtime.path"> <path location="${test.classes.dir}" /> <path refid="test.compile.path" /> </path> <!-- テストソース置き場 --> <property name="test.src.dir" value="./test"/> <!-- テストクラス置き場 --> <property name="test.classes.dir" value="./test-classes"/> <!-- テストリポート置き場 --> <property name="test.report.dir" value="./test-reports"/> <!-- テストをコンパイル/実行--> <target name="test" description="テストをコンパイルし実行する。"> <antcall target="test-report"/> </target> <!-- テストを実行する--> <target name="test-execute" depends="test-compile"> <delete dir="${test.report.dir}"/> <mkdir dir="${test.report.dir}" /> <junit fork="true" printsummary="yes" haltonfailure="no" haltonerror="no"> <classpath refid="test.runtime.path"/> <jvmarg line="-Djava.awt.headless=true"/> <!-- システムプロパティが必要なら↓のような感じで指定する。 <sysproperty key="key" value="value"/> --> <batchtest fork="yes" todir="${test.report.dir}"> <fileset dir="${test.classes.dir}"> <include name="**/*Test.class"/> </fileset> <formatter type="xml"/> </batchtest> </junit> </target> <!-- テストをコンパイルする --> <target name="test-compile"> <mkdir dir="${test.classes.dir}" /> <javac srcdir="${test.src.dir}" destdir="${test.classes.dir}" encoding="UTF-8"> <classpath refid="test.compile.path"/> </javac> </target> <!-- テストリポートを作成する --> <target name="test-report" depends="test-execute"> <junitreport todir="${test.report.dir}"> <fileset dir="${test.report.dir}"> <include name="TEST-*.xml"/> </fileset> <report format="frames" todir="${test.report.dir}"/> </junitreport> </target>
実行は以下のコマンドで。
$ ant test
隣の炎上プロジェクトで使うため昔使っていたbuild.xmlからコピペして作成したわけだけど、こういう作業をしているとやっぱMavenは便利だなーと思う。↑みたいなタスクとか、何回定義してきたかわからない、もう飽きたよ。。。まぁ、アレはアレで腹立つことも多いけど、今から新規にプロジェクト作るとしたらMavenだよなー。