Question

En gros, ce que je veux réaliser, c'est quelque chose comme ça mais en utilisant Robotium dans Ant.Je souhaite tester mes packages (suites ?) individuellement à l'aide d'une commande Ant.

La raison en est que la complexité de l'application est si grande qu'elle rencontre des problèmes lorsque je lance tout en même temps, généralement se termine à mi-chemin en raison d'une fuite de mémoire tandis que Robotium parcourt les dossiers, et comment certains cas affectent les cas futurs en raison d'un changement d'état quelque part dans l'application.

Tout fonctionne parfaitement lors de l'exécution du package actuel ou de l'exécution de chaque cas individuellement (en utilisant mon IDE), je veux donc savoir comment cela est réalisé via Ant à la place.

Était-ce utile?

La solution

J'ai moi-même compris le problème.C'est en fait assez simple car j'ai imité le comportement du test des fourmis.

L'idée est que chaque fois ant test est exécuté, il invoque simplement le adb shell commande et déclenche le lanceur de tests d'instrumentation am instrument, avec d'autres paramètres.Les paramètres peuvent être personnalisés pour définir quelles classes ou packages seront testés.

La solution est de définir un target Sur ton custom_rules.xml (J'utilise macrodef afin que je puisse le réutiliser pour d'autres cibles) qui effectue cela.

    <macrodef name="test-class">
    <attribute name="class"/>

    <sequential>
        <echo level="info">Running tests for @{class}</echo>
        <exec executable="${adb}" failonerror="false">
            <arg line="${adb.device.arg}"/>
            <arg value="shell"/>
            <arg value="am"/>
            <arg value="instrument"/>
            <arg value="-w"/>
            <arg value="-e"/>
            <arg value="class"/>
            <arg value="@{class}"/>
            <arg value="com.example.application/${test.runner}"/>
        </exec>
    </sequential>

</macrodef>

Donc, si vous souhaitez une commande Ant telle que test-example qui teste les cas de test .tests.ExampleTest, vous pouvez la définir comme telle :

<target name="test-example">
     <test-class class="com.example.application.tests.ExampleTest />
</target>

Et puis exécutez-le comme

ant clean debug install test-example 

ou juste

ant test-example

Oh, et ce n'est pas exclusif à Robotium, car Robotium s'appuie en fait sur le cadre de test existant fourni par Android.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top