Androidテストプロジェクトをビルドするときにantでemmaを使用する方法は知っていますが、SDKを使用するときにフィルターを使用するためのヒントが見つかりません。emmaのWebサイトでは、emmaを自分で呼び出すときに説明していますが、Android SDKビルドファイルでは、emmaはantファイルまたはコマンドラインで呼び出されないため、フィルターオプションを追加できません。
誰か提案はありますか?
Androidテストプロジェクトをビルドするときにantでemmaを使用する方法は知っていますが、SDKを使用するときにフィルターを使用するためのヒントが見つかりません。emmaのWebサイトでは、emmaを自分で呼び出すときに説明していますが、Android SDKビルドファイルでは、emmaはantファイルまたはコマンドラインで呼び出されないため、フィルターオプションを追加できません。
誰か提案はありますか?
SDK ツール r18 の時点で、単純に追加できます
emma.filter=-com.your.excluded.package.*
プロジェクトの ant.properties に ( Test プロジェクトではありません)
これは、使用している SDK のバージョン、特にディレクトリに含まれているビルド ファイルによって異なります<android-sdk>/tools/ant
。
ant.properties
SDK r18 以降では、ターゲット (テストではない) プロジェクトのファイルにプロパティを追加するのと同じくらい簡単です。たとえば、
emma.filter=-*.test.*
テスト パッケージからすべてのクラスを除外します。emma フィルターの構文は、emma のドキュメントにあります。
これには問題があります。これには以下が含まれます。
-emma-instrument
ます (この方法の説明は、実行して得られる標準のプロジェクト ビルド ファイルにありますandroid create/update project
) 。リンクされた課題に従ってターゲットを変更すると、次のようになります。
<target name="-emma-instrument" depends="compile">
<echo>Instrumenting classes from ${out.absolute.dir}/classes...</echo>
<!-- It only instruments class files, not any external libs -->
<emma enabled="true">
<instr verbosity="trace1"
mode="overwrite"
instrpath="${out.absolute.dir}/classes"
outdir="${out.absolute.dir}/classes">
<filter excludes="*.R,*.R$$*,${emma.exclusion.pattern}" />
</instr>
<!-- TODO: exclusion filters on R*.class and allowing custom exclusion from
user defined file -->
</emma>
</target>
除外フィルター構文の説明は、emma のドキュメントで入手できます。
emma.exclusion.pattern
を使用して独自の除外を提供します私にとって、これはSDKツールr13で魅力的に機能しました。