如何通过Android的ant构建脚本运行单个测试用例?

时间:2012-12-17 07:39:21

标签: android testing ant functional-testing

Android的标准build.xml完全支持通过test目标在设备和模拟器上执行功能测试用例。但是这个目标总是在测试项目中执行所有测试用例;出于调试原因,我如何指示它只运行一个测试用例?

3 个答案:

答案 0 :(得分:2)

您可以使用adb shell "start instrument -w -e class package_name/class_name package_name/android.test.InstrumentationTestRunner"

答案 1 :(得分:0)

我在custom_rules.xml中创建了自己的目标,从用户674199的答案中抽象出一点:

<target name="test-single" depends="-test-project-check" description="Runs a single test case, given with -DclassToTest=package.path.to.Class">
    <run-tests-helper>
        <extra-instrument-args>
            <arg value="-e" />
               <arg value="class" />
               <arg value="${classToTest}" />
        </extra-instrument-args>
    </run-tests-helper>
</target>

这很符合我的目的。

答案 2 :(得分:0)

托马斯的答案因为错误而有点弃用或者无法正常工作:

testSingle:
     [echo] Running tests ...
     [exec] /system/bin/sh: ${test.runner}: bad substitution

如果您在Android SDK test中看到原始build.xml目标,则会看到之前设置了一些其他必需属性,因此这是我的工作目标:

<!-- custom test target to perform specific test only -->
<target
    name="testSingle"
    depends="-test-project-check"
    description="Runs a single test case, given with -DtestClass=package.path.to.Class">

     <property name="test.runner" value="android.test.InstrumentationTestRunner" />
     <property name="tested.project.absolute.dir" location="${tested.project.dir}" />

    <!-- Application package of the tested project extracted from its manifest file -->
     <xpath input="${tested.project.absolute.dir}/AndroidManifest.xml"
             expression="/manifest/@package" output="tested.project.app.package" />

    <run-tests-helper>
        <extra-instrument-args>
           <arg value="-e" />
             <arg value="class" />
              <arg value="${testClass}" />
        </extra-instrument-args>
    </run-tests-helper>
</target>

以下是我如何运行它:

  

ant instrument testSingle -DtestClass = com.company.tests.SomeTest

其中com.company.tests.SomeTest是完整的测试类名称。