読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

AndroidのJUnitテスト結果を取得する

Android

AndroidのテストプロジェクトではJUnitの結果が出力されません。
これを出力するためにはちょいとゴニョゴニョとすることが必要です。


今回使ったのは jsankey/android-junit-report · GitHub です


Antで実行可能にする

Antで実行できるようにするには下記のコマンドで自動でやってくれます。
build.xmlも作ってくれるので簡単です。

$ android update test-project -p "プロジェクトのパス" -m "テスト対象のプロジェクトのパス"

android-junit-reportの設定

jarダウンロード

Downloads · jsankey/android-junit-report · GitHub からjarをダウンロードしてきます。
ダウンロードしたjarをテストプロジェクトに追加してビルドパスに追加します。

AndroidManifest.xml編集

下記を追加します。

<instrumentation
        android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"
        android:targetPackage="{テスト対象のプロジェクトのパッケージ名}"/>
custom_rules.xml作成

プロジェクト直下に作ります。

<?xml version="1.0" encoding="UTF-8"?>
<project name="cutom">
    <property name="reports.dir" value="bin/reports"/>

    <!-- The following target shows how to fetch the default report using adb pull. -->
    <target name="fetch-test-report">
        <echo>Downloading XML test report...</echo>
        <mkdir dir="${reports.dir}"/>
        <exec executable="${adb}" failonerror="true">
            <arg line="${adb.device.arg}"/>
            <arg value="pull"/>
            <arg value="/data/data/${tested.project.app.package}/files/junit-report.xml"/>
            <arg value="${reports.dir}/junit-report.xml" />
        </exec>
    </target>

    <!-- An example of a build, run and report fetch with defaults. -->
    <target name="test-and-fetch" depends="debug,install,test,fetch-test-report"/>

</project>

テスト結果を取得するだけの最低限の設定です。
android-junit-report/example/tests/custom_rules.xml at master · jsankey/android-junit-report · GitHub を参考にして編集しました。

ant.properties編集

下記を追加します。

test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner

Ant実行

ここまで設定できたらAntを実行してみます。

$ ant clean test-and-fetch

実行が成功するとbin/reports/junit-report.xml という結果ファイルが生成されるはずです。





今回はこの方法でやりましたが、他にも方法はあるみたいです。
これを使えばJenkinsで結果レポートを表示することもできますね。
まだちゃんと運用してないのでうまくいかないパターンもあるかもしれませんが…



かなり今さらですが、最近ようやくテストコードとかCIとかをちゃんとやっていこうってなってきました。
出来るところから少しずつやっていきます。