■ はじめに
* カバレッジツール * Coberturaで、「コヴェルトゥーラ」と読むらしい
http://d.hatena.ne.jp/selenium_blog/20060309/1141927245
補足:別のライブラリについて
* 以下の関連記事を参照
設定
[1-1] 以下のサイトからCobertura をダウンロードする
# 今回は、「cobertura-2.1.1-bin.zip」
http://sourceforge.net/projects/cobertura/files/cobertura/
[1-2] zipを解凍
* 「cobertura-2.1.1.jar」とその配下の「lib」が重要
■ Eclipse/Antで Cobertura を実行するには
[2-1] [1-2]で解凍したフォルダ配下の「cobertura.jar」とその配下の「lib」を対象のプロジェクト配下に配置する
[例] プロジェクト名「SampleJava」
SampleJava + src + libs + cobertura + cobertura-2.1.1.jar + lib <- 今回はここに置いた + asm-5.0.1.jar + asm-analysis-5.0.1.jar + ・・・略・・・
[2-2] build.xmlを書く(後はこれを実行するだけ)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project basedir="." default="run.all" name="SampleJava"> <property name="junit.path" location="C:/eclipse/plugins/org.junit_4.12.0.v201504281640/junit.jar" /> <property name="hamcrest.path" location="C:/eclipse/plugins/org.hamcrest.core_1.3.0.v201303031735.jar" /> <property name="lib.dir" location="${basedir}/libs" /> <property name="src.dir" location="${basedir}/src" /> <property name="build.dir" location="${basedir}/class" /> <property name="test.dir" location="${basedir}/test" /> <property name="junit.output.dir" location="junit" /> <property name="cobertura.dir" location="${lib.dir}/cobertura" /> <property name="cobertura.output.dir" location="${basedir}/cobertura" /> <property name="build.coverage.dir" location="${build.dir}/coverage" /> <property name="build.instrumented.dir" location="${build.dir}/instrumented-classes" /> <path id="src.classpath"> <pathelement location="${build.dir}" /> </path> <path id="cobertura.classpath"> <fileset dir="${cobertura.dir}"> <include name="cobertura-2.1.1.jar" /> <include name="lib/*.jar" /> </fileset> </path> <path id="src.classpath"> <pathelement location="${build.dir}" /> </path> <target name="compile" description="Javaコンパイル"> <delete dir="${build.dir}" /> <mkdir dir="${build.dir}" /> <javac srcdir="${src.dir}" destdir="${build.dir}" debug="true" debuglevel="vars,lines,source" includeantruntime="false" /> </target> <taskdef classpathref="cobertura.classpath" resource="tasks.properties" /> <target name="run.all"> <antcall target="coverage.report" /> <antcall target="run.checkstyle" /> <antcall target="run.findbugs" /> </target> <target name="instrument" depends="compile.for.test"> <delete dir="${build.instrumented.dir}" /> <mkdir dir="${build.instrumented.dir}" /> <cobertura-instrument todir="${build.instrumented.dir}"> <fileset dir="${build.dir}"> <include name="**/*.class" /> </fileset> </cobertura-instrument> </target> <target name="compile.for.test" description="Javaコンパイル"> <delete dir="${build.dir}" /> <mkdir dir="${build.dir}" /> <javac srcdir="${src.dir}" destdir="${build.dir}" debug="true" debuglevel="vars,lines,source" includeantruntime="false" /> <javac srcdir="${test.dir}" destdir="${build.dir}" debug="true" debuglevel="vars,lines,source" verbose="true" includeantruntime="false" classpath="${junit.path}" /> </target> <target name="test" depends="instrument" description="Unit test the application"> <delete dir="${junit.output.dir}" /> <mkdir dir="${junit.output.dir}" /> <junit fork="yes" showoutput="yes" dir="${junit.output.dir}" errorProperty="test.failed" failureProperty="test.failed"> <jvmarg value="-XX:-UseSplitVerifier" /> <sysproperty key="net.sourceforge.cobertura.datafile" file="${basedir}/cobertura.ser" /> <formatter type="xml" /> <classpath refid="src.classpath" /> <classpath> <fileset dir="${lib.dir}"> <include name="**/*.jar" /> </fileset> <pathelement path="${junit.path}" /> <pathelement path="${hamcrest.path}" /> <pathelement path="${junit.output.dir}" /> <pathelement path="${build.dir}" /> </classpath> <batchtest todir="${junit.output.dir}"> <fileset dir="${test.dir}"> <include name="**/*Test.java" /> </fileset> </batchtest> </junit> </target> <target name="coverage.report" depends="test"> <delete dir="${cobertura.output.dir}" /> <mkdir dir="${cobertura.output.dir}" /> <cobertura-report format="xml" destdir="${cobertura.output.dir}"> <fileset dir="${src.dir}"> <include name="**/*.java"/> <exclude name="**/package-info.java" /> </fileset> </cobertura-report> </target> </project>
参考文献
http://works.nri.co.jp/service/pdf/jcoverage_cobertura.pdf
http://www.ibm.com/developerworks/jp/java/library/j-cobertura/
http://d.hatena.ne.jp/yamap_55/20130409/1365518199
関連記事
カバレッジツール ~ EclEmma 編 ~ Jenkins ~ 初級設定編 / (4) プラグインを設定 ~ カバレッジツール Cobertura でのトラブルシューティング Ant で jUnit を実行する