Je ne sais pas d'un excellent moyen d'exécuter des tests automatiquement à partir d'Eclipse, mais je l'ai mis en place une méthode avant droit de construire automatiquement et le déploiement des tests en utilisant la fourmi.
Mon projet est organisé comme suit:
- Appelons la racine
- répertoire racine du projet A l'intérieur, je le build.xml généré par le script activityCreator dans le SDK.
- J'ai un deuxième projet contenant mes tests situés dans la racine/Tests
- Ce projet a sa propre AndroidManifest.xml (voir la structure du Android API Demos comme exemple)
- Ce projet a également sa propre construction .xml
afin de soutenir JUnit dans la racine/tests/build.xml, vous devez ajouter le chemin à JUnit. Une façon de procéder consiste à ajouter le chemin d'accès aux cibles de compilation, dex, debug et release (la version est omise, mais elle nécessite la même modification que celle effectuée par le débogage). De plus dans la cible de la compilation, nous incluons le chemin de ../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>
Maintenant, nous pouvons construire deux projets séparément. La touche finale est d'ajouter une nouvelle cible à root/build.xml qui va construire et déployer le projet et tester et exécuter les tests. Pour ce faire, ajoutez la cible suivante à la racine/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>
Une fois que tout cela est en place, démarrez l'émulateur, et exécuter des tests « fourmis ». Cela va construire, déployer et exécuter vos tests en une seule commande.
C'est exactement ce dont j'ai besoin mais j'essaie de comprendre comment l'intégrer avec robotium .... Avez-vous un exemple avec ça? Je suis un novice en matière de fourmis, mais je dois le faire pour que je puisse m'intégrer à hudson et obtenir l'ensemble de la boucle de test automatisée. –