基本上,我想要实现的是something like this,但在Ant中使用Robotium。我想使用Ant命令单独测试我的包(套件?)。
之所以这样,是因为应用程序的复杂性非常大,以至于当我同时运行所有内容时会遇到问题,通常terminating midway due to a memory leak因为Robotium会通过案例运行,而how some cases affect future cases则由于在应用程序的某个地方改变状态。
当只运行当前包或单独运行每个案例(使用我的IDE)时,一切都很完美,所以我想知道如何通过Ant来实现这一点。
答案 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提供的现有测试框架之上。