Antでdjunitを実行する
Antでdjunitを実行した時のメモ
必要なJarファイル
(「jp.co.dgic.eclipse.jdt.djunit_0.8.3」からコピー)
asm-3.0.jar bcel-5.2.jar djunit.jar jakarta-oro-2.0.7.jar jcoverage-djunit-1.0.5.jar junit-4.4.jar
build.xml
<?xml version="1.0"?> <project default="build" basedir="."> <!-- プロパティ定義 --> <property name="home.dir" value="." /> <property name="lib.dir" value="${home.dir}/lib" /> <property name="src.dir" value="${home.dir}/src" /> <property name="test.dir" value="${home.dir}/test" /> <property name="class.dir" value="${home.dir}/bin" /> <property name="dist.dir" value="${home.dir}/release" /> <property name="doc.dir" value="${home.dir}/doc" /> <property name="javadoc.dir" value="${doc.dir}/javadoc" /> <property name="report.dir" value="${doc.dir}/report" /> <property name="junit.report.dir" value="${report.dir}/junit" /> <property name="jcoverage.report.dir" value="${report.dir}/jcoverage" /> <property name="wk.dir" value="${home.dir}/work" /> <property name="junit.wk.dir" value="${wk.dir}/junit" /> <property name="jcoverage.wk.dir" value="${wk.dir}/jcoverage" /> <property name="app.name" value="db_access" /> <property file="jdbc.properties" /> <!-- タイムスタンプ --> <tstamp> <format property="SYSTIMESTAMP" pattern="yyyy-MM-dd HH:mm:ss.SSS" locale="en" /> </tstamp> <!-- クラスパス定義 --> <path id="class.path"> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> </path> <!-- タスク定義 --> <taskdef resource="djunittasks.properties" classpathref="class.path" /> <taskdef name="dbunit" classname="org.dbunit.ant.DbUnitTask" classpathref="class.path" /> <!-- 初期処理 --> <target name="init"> <mkdir dir="${home.dir}" /> <mkdir dir="${lib.dir}" /> <mkdir dir="${src.dir}" /> <mkdir dir="${test.dir}" /> <mkdir dir="${class.dir}" /> <mkdir dir="${dist.dir}" /> <mkdir dir="${doc.dir}" /> <mkdir dir="${javadoc.dir}" /> <mkdir dir="${report.dir}" /> <mkdir dir="${junit.report.dir}" /> <mkdir dir="${jcoverage.report.dir}" /> </target> <!-- コンパイル --> <target name="build" depends="init"> <javac srcdir="${src.dir}" destdir="${class.dir}" debug="on" /> </target> <!-- Jar生成 --> <target name="makeJar" depends="build"> <jar destfile="${dist.dir}/${app.name}.jar"> <fileset dir="${class.dir}"> <exclude name="*/**/*Test*" /> </fileset> </jar> </target> <!-- SQL実行 --> <target name="exeSql"> <sql driver="${jdbc.driver}" url="${jdbc.url}" userid="${jdbc.user}" password="${jdbc.password}" classpathref="class.path" print="true" onerror="continue"> DROP TABLE SAMPLE01; CREATE TABLE SAMPLE01 ( ID NUMBER(5) PRIMARY KEY, COL_CHAR CHAR(5), COL_VARCHAR2 VARCHAR2(20), COL_NUMBER NUMBER(5), COL_DATE DATE, COL_TIMESTAMP TIMESTAMP ); INSERT INTO SAMPLE01 VALUES (1, 'XXXX1', 'XXXXXXXXX1', 1, TO_DATE('2008-07-01', 'YYYY-MM-DD'), TO_DATE('2008-07-01', 'YYYY-MM-DD')); INSERT INTO SAMPLE01 VALUES (2, 'XXXX2', 'XXXXXXXXX2', 2, TO_DATE('2008-07-02', 'YYYY-MM-DD'), TO_DATE('2008-07-02', 'YYYY-MM-DD')); INSERT INTO SAMPLE01 VALUES (3, 'XXXX3', 'XXXXXXXXX3', 3, TO_DATE('2008-07-03', 'YYYY-MM-DD'), TO_DATE('2008-07-03', 'YYYY-MM-DD')); DROP TABLE SAMPLE02; CREATE TABLE SAMPLE02 ( ID NUMBER(5) PRIMARY KEY, COL_BLOB BLOB ); INSERT INTO SAMPLE02 VALUES (1, EMPTY_BLOB()); </sql> </target> <!-- djunitを実行 --> <target name="djunit" depends="test.init"> <!-- テストを実行して結果をXMLファイルとして出力 --> <djunit printsummary="yes" targetsrcdir="${src.dir}" coverage="yes" virtualMock="yes" haltonfailure="no"> <classpath> <pathelement location="${class.dir}" /> <path refid="class.path" /> </classpath> <formatter type="xml" /> <batchtest fork="yes" todir="${junit.wk.dir}"> <fileset dir="${test.dir}"> <include name="**/*Test*.java" /> </fileset> </batchtest> </djunit> </target> <!-- Report[JUnit]を生成 --> <target name="junit.report" depends="djunit"> <!-- 古いファイルを削除 --> <delete dir="${junit.report.dir}" /> <mkdir dir="${junit.report.dir}" /> <!-- XMLファイルを基にHTML形式のレポートを出力 --> <junitreport todir="${junit.report.dir}"> <fileset dir="${junit.wk.dir}"> <include name="TEST-*.xml" /> </fileset> <report format="frames" todir="${junit.report.dir}" /> </junitreport> <!-- HTMLへタイムスタンプを設定 --> <replace file="${junit.report.dir}/index.html" token="Unit Test Results" value="Unit Test Results - ${SYSTIMESTAMP}" /> </target> <!-- Report[JCoverage]を生成 --> <target name="jcoverage.report" depends="junit.report"> <!-- 古いファイルを削除 --> <delete dir="${jcoverage.report.dir}" /> <mkdir dir="${jcoverage.report.dir}" /> <!-- HTML形式のレポートを出力 --> <djunit-coverage-report serFile="./jcoverage.ser" srcdir="${src.dir}" destdir="${jcoverage.report.dir}"> <classpath refid="class.path" /> </djunit-coverage-report> <!-- HTMLへタイムスタンプを設定 --> <replace file="${jcoverage.report.dir}/index.html" token="Coverage Report" value="Coverage Report - ${SYSTIMESTAMP}" /> </target> <!-- テスト前処理 --> <target name="test.init"> <delete dir="${wk.dir}" /> <mkdir dir="${wk.dir}" /> <mkdir dir="${jcoverage.wk.dir}" /> <mkdir dir="${junit.wk.dir}" /> </target> <!-- テスト実行 --> <target name="test" depends="jcoverage.report"> <delete dir="${wk.dir}" /> </target> <!-- DBUnitで使用するXMLを生成 --> <target name="export.dbunit"> <dbunit driver="${jdbc.driver}" url="${jdbc.url}" userid="${jdbc.user}" password="${jdbc.password}" schema="SCOTT"> <export dest="export.xml" /> </dbunit> </target> </project>