2012-10-02 44 views
0

基本上,我想實現的是something like this,但在Ant中使用Robotium。我想用Ant命令分別測試我的軟件包(套件?)。通過Ant單獨批量運行機器人箱子

這樣做的原因是因爲應用程序的複雜性是如此之大,它遇到的問題,當我在一次運行所有程序,一般terminating midway due to a memory leak作爲Robotium犁過的案件,並how some cases affect future cases由於應用程序狀態的變化某處。

當只運行當前程序包或單獨運行每個案例(使用我的IDE)時,所有工作都很完美,所以我想知道如何通過Ant實現這一點。

回答

1

我已經想出了自己的問題。這實際上很簡單,因爲我模仿了螞蟻測試的行爲。

想法是,無論何時運行ant test,它都會調用adb shell命令並觸發儀器測試運行器am instrument以及其他參數。可以定製參數以定義將測試哪些類或包。

的解決方法是在你的custom_rules.xml定義target(我用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提供的現有測試框架之上的。