LoginSignup
1
2

More than 5 years have passed since last update.

AntでCoberturaを使用する際のbuild.xmlの設定

Last updated at Posted at 2015-09-27

Ant(build.xml)からCoberturaを使用してカバレッジを取得する方法です。

以下のサイトも合わせて参考にして頂ければと思います。
JenkinsでCoberturaを使用してカバレッジを取得
※Coberturaモジュール(Cobertura-x.x.x.1-bin.tar.zip)のダウンロードや
 Jenkinsのジョブ設定について記載しています。

build.xmlの設定内容は、以下となります。
(以下、試したバージョン情報)
apache-ant:1.9.4
coberturaモジュール:2.0.3

build.xml
<project basedir="." default="build" name="[任意のディレクトリ]">

<property name="build.dir" value="${basedir}/build/>

<!-- コンパイル済classファイルにログ出力コードを埋め込んだファイルの出力先 -->
<property name="build.instrumented.dir" value="${build.dir}/classes"/>

<!-- カバレッジレポートの出力先 -->
<property name="build.coverage.dir" value="${build.dir}/cobertura/coverage"/>

<!-- JUnitレポートの出力先 -->
<property name="junit.ouput.dir" value="./build/junit/coverage"/>

<!-- ビルドに必要なパスがあれば設定 -->
<path id="sample.classpath">
    <pathelement location="xxx/lib" />
</path>

<!-- cobertura-x.x.x.1-bin.tar.zipを解凍したディレクトリ -->
<!-- ${basedir}直下のcobertura-libに配置した場合 -->
<property name="cobertura.dir" value="${basedir}/cobertura-lib"/>

<!-- Cobertura.jarのパス設定 -->
<path id="cobertura.classpath">
    <fileset dir="${cobertura.dir}">
        <include name="cobertura.jar" />
        <include name="lib/**/*.jar" />
    </fileset>
</path>

<!-- mainタスク実行(build.xmlから指定するタスク) -->
<!-- build-project        : Javaコンパイル -->
<!-- cobertura_instrument : classファイルのリコンパイル(Coberturaログ埋め込み)-->
<!-- JUnitTest            : JUnitテスト実行 -->
<!-- coverage_report      : Coberturaレポート出力 -->
<target name="main" depends="build-project,cobertura_instrument,JUnitTest,coverage_report" />

<!-- Cobertura:タスク宣言 -->
<taskdef classpathref="cobertura.classpath" resource="tasks.properties" />

<!-- cobertura.serの削除(serファイルのお掃除) -->
<target name="clean">
    <delete dir="target/classes" />
    <delete dir="target/test-classes />
    <delete file="cobertura.ser" />
</target>

<!-- Javaコンパイル (JDK1.7) -->
<target depends="clean" name="build-project">
    <javac debug="true" encoding="utf-8" destdir="target/classes" source="1.7" target="1.7" fork="yes">
        <src path=[Javaファイル格納パス] />
        <classpath refid="sample.classpath" />
    </javac>
</target>

<!-- Cobertura:classファイルのリコンパイル -->
<!-- classファイルの出力先がtarget/classesの場合 -->
<target name="cobertura_instrument">
    <cobertura-instrument todir="${build.instrumented.dir}">
        <fileset dir="target/classes>
            <include name="**/*.class" />
        </fileset>
    </cobertura-instrument>
</target>

<!-- JUnit -->
<target name="JUnitTest">
    <mk dir="${junit.output.dir}" />
    <junit fork="yes">
        <sysproperty key="net.sourceforge.cobertura.datafile" file="${basedir}/cobertura.ser" />
        <formatter type="xml" />

        <!-- coberturaのclassパスを先頭に記述 -->
        <classpath refid="cobertura.classpath" />
        <classpath location="${build.instrumented.dir}" />

        <batchtest todir="${junit.output.dir}">
            <fileset dir="target/test-classes" />
        </batchtest>
    </junit>

    <!-- JUnit:レポート出力 -->
    <junitrepot>
        <fileset dir="${junit.output.dir}">
            <include name="TEST-*.xml" />
        </fileset>
        <repot format="noframes" todir="${junit.output.dir}" />
    </junitreport>
</target>

<!-- Cobertura:レポート出力 -->
<target name="coverage_repot>
    <cobertura-report srcdir="[Javaファイル格納パス]" destdir="${build.coverage.dir}" encoding="shift_jis" />
    <cobuertura-report srcdir="[Javaファイル格納パス]" destdir="${build.coverage.dir}" format="xml" encoding="shift_jis" />
</target>

build.xmlの設定は、以下のサイトを参考にさせて頂きました。
Cobertura、Ant、Jenkinsでコードカバレッジを取得する方法

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2