7

Androidテストプロジェクトをビルドするときにantでemmaを使用する方法は知っていますが、SDKを使用するときにフィルターを使用するためのヒントが見つかりません。emmaのWebサイトでは、emmaを自分で呼び出すときに説明していますが、Android SDKビルドファイルでは、emmaはantファイルまたはコマンドラインで呼び出されないため、フィルターオプションを追加できません。

誰か提案はありますか?

4

2 に答える 2

10

SDK ツール r18 の時点で、単純に追加できます

emma.filter=-com.your.excluded.package.*

プロジェクトの ant.properties に ( Test プロジェクトではありません)

于 2012-06-16T07:21:41.363 に答える
5

これは、使用している SDK のバージョン、特にディレクトリに含まれているビルド ファイルによって異なります<android-sdk>/tools/ant

Android SDK >= 18

ant.propertiesSDK r18 以降では、ターゲット (テストではない) プロジェクトのファイルにプロパティを追加するのと同じくらい簡単です。たとえば、

emma.filter=-*.test.*

テスト パッケージからすべてのクラスを除外します。emma フィルターの構文は、emma のドキュメントにあります。

Android SDK < 18

これには問題があります。これには以下が含まれます。

  • ターゲット プロジェクト (テスト プロジェクトではない) のビルド ファイルを変更する必要があります。
  • インポートされた Android ビルド ファイルからターゲットをコピーして貼り付けることにより、ビルド ファイルを変更し-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 のドキュメントで入手できます。

  • 変更を変更するか、提案された ant プロパティemma.exclusion.patternを使用して独自の除外を提供します

私にとって、これはSDKツールr13で魅力的に機能しました。

于 2011-11-29T12:41:12.633 に答える