Emma in Ant for ofline
1.ema libをダウンロードする
http://sourceforge.net/projects/emma/files/emma-release/2.0.5312/emma-2.0.5312.zip/download
私はemaをダウンロードしました。
2.解凍ema-2.05.312.zipにはlibディレクトリがあり、2つのjarファイルが含まれています。
ema.jar
emaant.jar:Emma taskdefsを含んでいます。
この二つのファイルはプロジェクトのlib倉庫に入れます。build.xmlにpath elementを設定して、ANt呼び出しに便利です。
(1)instrはemaのバイトコード挿入器で、コンパイルされたclasesディレクトリの中でcoverageを必要とするclassファイルをbytecodeに挿入し、copyから
$out.instr.dirディレクトリは、metadata.emaファイルを生成します。
(2)filterは、どのクラスの必要性に合致するか、またはcoverageを必要としないかについて、includes\excludes\value\fileといういくつかの方法で*マッチングをサポートします。file方式のファイルはこのようにすることができます。
この類はcoverageを必要としないという意味です。
-comp.foo.test.*
同前+必要を表します
+comp.foo.*
3.コードを実行したり、junnitを実行してコードを実行したりします。ここではemaダウンロードパッケージに持参されたexampleを例にして実行コードです。2つのjvmargを追加して、運行コードのカバー率ファイルをcoverage.emaで生成したり、生成された内容はmerge方式です。
その他のいくつかのパラメータ:
depth:レポートの細さをどの階に指定するかは、以下の値になります。
* all.
* package
* source
* クラス
* method
encoding:レポートの文字セットを指定します。
参考:
http://emma.sourceforge.net/userguide_single/userguide.
http://emma.sourceforge.net/reference_single/reference.httm
原文の住所:http://hi.baidu.com/lettoo/blog/item/da98a0038edaaae708fa93cd.html
http://sourceforge.net/projects/emma/files/emma-release/2.0.5312/emma-2.0.5312.zip/download
私はemaをダウンロードしました。
2.解凍ema-2.05.312.zipにはlibディレクトリがあり、2つのjarファイルが含まれています。
ema.jar
emaant.jar:Emma taskdefsを含んでいます。
この二つのファイルはプロジェクトのlib倉庫に入れます。build.xmlにpath elementを設定して、ANt呼び出しに便利です。
<!-- directory that contains emma.jar and emma_ant.jar: -->
<property name="emma.dir" value="${basedir}/../lib" />
<path id="emma.lib" >
<pathelement location="${emma.dir}/emma.jar" />
<pathelement location="${emma.dir}/emma_ant.jar" />
</path>
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
2.offineモードは、まずコードのカバーが必要なクラスファイルにバイトコードを追加します。<target name="emma" description="turns on EMMA instrumentation/reporting" >
<property name="emma.enabled" value="true" />
<!-- EMMA instr class output directory: -->
<property name="out.instr.dir" value="${basedir}/outinstr" />
<mkdir dir="${out.instr.dir}" />
</target>
<target name="emma.add.bytecode" depends="init, compile" description="Emma add bytecode to classes" >
<emma enabled="${emma.enabled}" >
<instr instrpathref="run.classpath"
destdir="${out.instr.dir}"
metadatafile="${coverage.dir}/metadata.emma"
merge="true">
<filter includes="classes name or classes package which you want to coverage">
<filter excludes="classes name or classes package which you do not want to coverage">
<filter value="+classes, -classes">
<filter file="filter.txt">
</instr>
</emma>
</target>
注:(1)instrはemaのバイトコード挿入器で、コンパイルされたclasesディレクトリの中でcoverageを必要とするclassファイルをbytecodeに挿入し、copyから
$out.instr.dirディレクトリは、metadata.emaファイルを生成します。
(2)filterは、どのクラスの必要性に合致するか、またはcoverageを必要としないかについて、includes\excludes\value\fileといういくつかの方法で*マッチングをサポートします。file方式のファイルはこのようにすることができます。
この類はcoverageを必要としないという意味です。
-comp.foo.test.*
同前+必要を表します
+comp.foo.*
3.コードを実行したり、junnitを実行してコードを実行したりします。ここではemaダウンロードパッケージに持参されたexampleを例にして実行コードです。2つのjvmargを追加して、運行コードのカバー率ファイルをcoverage.emaで生成したり、生成された内容はmerge方式です。
<target name="run" depends="emma.add.bytecode" description="Execute code or run junit test">
<java classname="Main" fork="true" >
<classpath>
<pathelement location="${out.instr.dir}" />
<path refid="run.classpath" />
<path refid="emma.lib" />
</classpath>
<jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
</java>
</target>
4.レポートを生成し、前の2ステップのmetadata.emaとcoverage.emaの2つのファイルからtxtとhtmlの2つのフォーマットのレポートを生成する。 <target name="emma.report" depends="run" description="Generate the emma report">
<emma enabled="${emma.enabled}" >
<report sourcepath="${src.dir}" >
<fileset dir="${coverage.dir}" >
<include name="*.emma" />
</fileset>
<txt outfile="${coverage.dir}/coverage.txt" />
<html outfile="${coverage.dir}/coverage.html" />
</report>
</emma>
</target>
<report>のsourcepathはソースコードディレクトリを指定するために使用されています。これで、どのコードがcoverageによって参照されますか?その他のいくつかのパラメータ:
depth:レポートの細さをどの階に指定するかは、以下の値になります。
* all.
* package
* source
* クラス
* method
encoding:レポートの文字セットを指定します。
参考:
http://emma.sourceforge.net/userguide_single/userguide.
http://emma.sourceforge.net/reference_single/reference.httm
原文の住所:http://hi.baidu.com/lettoo/blog/item/da98a0038edaaae708fa93cd.html