通过Ant分别运行Robotium案例

时间:2012-10-02 10:46:55

标签: java android ant robotium gui-testing

基本上,我想要实现的是something like this,但在Ant中使用Robotium。我想使用Ant命令单独测试我的包(套件?)。

之所以这样,是因为应用程序的复杂性非常大,以至于当我同时运行所有内容时会遇到问题,通常terminating midway due to a memory leak因为Robotium会通过案例运行,而how some cases affect future cases则由于在应用程序的某个地方改变状态。

当只运行当前包或单独运行每个案例(使用我的IDE)时,一切都很完美,所以我想知道如何通过Ant来实现这一点。

1 个答案:

答案 0 :(得分:1)

我自己已经找到了问题。这实际上很简单,因为我模仿了蚂蚁测试的行为。

这个想法是,只要运行ant test,它就会调用adb shell命令并触发检测测试运行器am instrument以及其他参数。可以自定义参数以定义要测试的类或包。

解决方案是在target上定义custom_rules.xml(我使用macrodef,以便我可以将其重复用于其他目标),并执行此操作。

    <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>

因此,如果您需要一个Ant命令(例如测试示例来测试.tests.ExampleTest测试用例),您可以将其定义为:

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

然后将其作为

运行
ant clean debug install test-example 

或只是

ant test-example

哦,这不是Robotium独有的,因为Robotium实际上建立在Android提供的现有测试框架之上。