12

現在、コマンドラインから次のようにインストルメンテーション テストを実行しています。

adb shell am instrument -w com.blah.blah/android.test.InstrumentationTestRunner

それらを Eclipse から (アプリケーションの自動インストールを使用して) 実行する方法はありますか?

4

2 に答える 2

8

エミュレータへの自動展開を判断できませんでした。ただし、同じ「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
于 2009-02-18T04:20:16.793 に答える
4

Eclipse から自動的にテストを実行する優れた方法はわかりませんが、ant を使用してテストを自動的にビルドおよびデプロイする簡単な方法をまとめました。

私のプロジェクトは次のように構成されています。

  1. プロジェクトのルート ディレクトリを root と呼びましょう
  2. 内部には、SDK のactivityCreatorスクリプトによって生成された build.xml があります。
  3. root/tests にあるテストを含む 2 番目のプロジェクトがあります

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 つのコマンドでテストをビルド、デプロイ、および実行できます。

于 2009-03-09T05:00:42.423 に答える