2009-01-22 8 views

Respuesta

6

No pude determinar la implementación automática en el emulador. Sin embargo, puede tomar el mismo comando "adb shell" y crear una configuración de inicio externo. Publiqué en el blog sobre este mismo tema here. Lanzar de esta manera es un poco más intuitivo cuando también está usando el argumento "-e depurar verdad".

Sin embargo, creo que he conseguido más provecho de la secuencia de comandos shell bash (si está utilizando una plataforma de desarrollo buena):

function adbtest() { 
    adb shell am instrument -w -e class blah.package.$1 blah.package.test/android.test.InstrumentationTestRunner; 
} 

De esta forma cuando quiero probar bla. package.FooTest Sólo tengo que recordar que escribir:

[email protected]:~$ adbtest FooTest 
4

no sé de una gran manera de ejecutar las pruebas de forma automática desde Eclipse, pero he juntado un método directo y de forma automática la construcción y el despliegue de las pruebas usando hormiga

Mi proyecto se organiza de la siguiente manera:

  1. Vamos a llamar a la raíz del proyecto directorio raíz
  2. interior, tengo el build.xml generada por el script activityCreator en el SDK.
  3. que tienen un segundo proyecto que contiene mis pruebas se encuentra en la raíz/pruebas
    • Este proyecto tiene su propio AndroidManifest.xml (ver la estructura de la Android API Demos como ejemplo)
    • Este proyecto también tiene su propia construcción .xml

con el fin de apoyar junit en la raíz/pruebas/build.xml, es necesario agregar la ruta a JUnit. Una forma de hacerlo es agregar la ruta a los objetivos de compilación, dex, depuración y lanzamiento (la versión se omite, pero necesita el mismo cambio que la depuración). También en el objetivo de compilación incluimos el camino ../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> 

Ahora, podemos construir ambos proyectos por separado. El toque final es agregar un nuevo objetivo a root/build.xml que construirá y desplegará el proyecto y probará y ejecutará las pruebas. Para hacer esto añada el siguiente objetivo de la raíz/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> 

Una vez que esto es todo en su lugar, iniciar el emulador, y ejecutar "pruebas de hormigas". Esto construirá, implementará y ejecutará sus pruebas en un solo comando.

+0

Esto es exactamente lo que necesito pero estoy intentando descubrir cómo integrar esto con el robotium ... ¿Tiene un ejemplo con eso? Soy un novato en hormiga pero necesito hacer esto para poder integrarme con Hudson y completar todo el ciclo de pruebas automatizadas. –

Cuestiones relacionadas