Как вы запускаете тестирование Android-инструментов из Eclipse? - PullRequest
11 голосов
/ 22 января 2009

В настоящее время я запускаю тесты контрольно-измерительных приборов из командной строки следующим образом:

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

Есть ли способ запустить их из Eclipse (с автоматической установкой приложения)?

Ответы [ 2 ]

7 голосов
/ 18 февраля 2009

Мне не удалось определить автоматическое развертывание на эмуляторе. Однако вы можете взять ту же команду "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
4 голосов
/ 09 марта 2009

Я не знаю отличного способа автоматического запуска тестов из Eclipse, но я собрал простой метод автоматического построения и развертывания тестов с использованием ant.

Мой проект организован следующим образом:

  1. Давайте назовем корневой каталог проекта корневым
  2. Внутри у меня есть build.xml, сгенерированный скриптом activityCreator в SDK.
  3. У меня есть второй проект, содержащий мои тесты, расположенный в root / tests
    • Этот проект имеет свой собственный AndroidManifest.xml (см. Пример структуры Android API )
    • Этот проект также имеет свой собственный build.xml

Для поддержки junit в root / tests / build.xml, вам нужно добавить путь к junit. Один из способов сделать это - добавить путь к целям компиляции, dex, отладки и выпуска (выпуск опущен, но он требует того же изменения, что и отладка). Также в цели компиляции мы включаем путь ../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>

Как только все это будет готово, запустите эмулятор и запустите "тесты муравья" Это создаст, развернет и выполнит ваши тесты в одной команде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...