現在、コマンドラインから次のようにインストルメンテーション テストを実行しています。
adb shell am instrument -w com.blah.blah/android.test.InstrumentationTestRunner
それらを Eclipse から (アプリケーションの自動インストールを使用して) 実行する方法はありますか?
エミュレータへの自動展開を判断できませんでした。ただし、同じ「adb shell」コマンドを使用して、外部起動構成を作成できます。私はこの同じトピックについてここにブログを書きました。「-e debug true」引数も使用している場合、この方法での起動はもう少し直感的です。
ただし、bash シェル スクリプトからより多くのマイレージを取得したと思います (優れた開発プラットフォームを使用している場合)。
function adbtest() {
adb shell am instrument -w -e class blah.package.$1 blah.package.test/android.test.InstrumentationTestRunner;
}
そうすれば、blah.package.FooTest をテストしたいときに、次のように入力することを覚えておくだけで済みます。
james@trex:~$ adbtest FooTest
Eclipse から自動的にテストを実行する優れた方法はわかりませんが、ant を使用してテストを自動的にビルドおよびデプロイする簡単な方法をまとめました。
私のプロジェクトは次のように構成されています。
root/tests/build.xml で junit をサポートするには、junit へのパスを追加する必要があります。これを行う 1 つの方法は、コンパイル、デックス、デバッグ、およびリリース ターゲットへのパスを追加することです (リリースは省略されますが、デバッグと同じ変更が必要です)。また、コンパイル ターゲットに ../src パスを含めます。
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="dirs, resource-src, aidl">
<javac encoding="ascii" target="1.5" debug="true" extdirs=""
srcdir="src/:../src"
destdir="${outdir-classes}"
bootclasspath="${android-jar}">
<classpath>
<fileset dir="${external-libs}" includes="*.jar"/>
<fileset file="${junit-path}"/>
</classpath>
</javac>
</target>
<!-- Convert this project's .class files into .dex files. -->
<target name="dex" depends="compile">
<echo>Converting compiled files and external libraries into ${outdir}/${dex-file}...</echo>
<apply executable="${dx}" failonerror="true" parallel="true">
<arg value="--dex" />
<arg value="--output=${intermediate-dex-ospath}" />
<arg path="${outdir-classes-ospath}" />
<fileset dir="${external-libs}" includes="*.jar"/>
<fileset file="${junit-path}"/>
</apply>
</target>
<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="dex, package-res">
<echo>Packaging ${out-debug-package}, and signing it with a debug key...</echo>
<exec executable="${apk-builder}" failonerror="true">
<arg value="${out-debug-package-ospath}" />
<arg value="-z" />
<arg value="${resources-package-ospath}" />
<arg value="-f" />
<arg value="${intermediate-dex-ospath}" />
<arg value="-rf" />
<arg value="${srcdir-ospath}" />
<arg value="-rj" />
<arg value="${external-libs-ospath}" />
<arg value="-rj" />
<arg value="${junit-path}" />
<arg value="-nf" />
<arg value="${native-libs-ospath}" />
</exec>
</target>
これで、両方のプロジェクトを別々にビルドできます。最後の仕上げは、プロジェクトとテストをビルドしてデプロイし、テストを実行する新しいターゲットを root/build.xml に追加することです。これを行うには、次のターゲットを root/build.xml に追加します。
<target name="tests" depends="reinstall">
<echo>Building and installing tests..</echo>
<exec executable="ant" failonerror="true">
<arg value="-f" />
<arg value="tests/build.xml" />
<arg value="reinstall"/>
</exec>
<mkdir dir="${log-dir}" />
<exec executable="${adb}">
<arg value="shell" />
<arg value="am" />
<arg value="instrument" />
<arg value="-w" />
<arg value="-e" />
<arg value="class" />
<arg value="org.yourproject.AllTests" />
<arg value="org.yourproject.tests/android.test.InstrumentationTestRunner" />
</exec>
</target>
これがすべて整ったら、エミュレーターを起動し、「ant テスト」を実行します。これにより、1 つのコマンドでテストをビルド、デプロイ、および実行できます。