3

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

4

3 回答 3

2

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

于 2012-12-17T08:13:25.853 回答
0

我创建了自己的目标,custom_rules.xml从 user674199 的回答中抽象了一点:

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

这很好地满足了我的目的。

于 2012-12-18T11:59:27.877 回答
0

托马斯的回答有点过时,或者因为错误而无法正常工作:

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

如果您test在 Android SDK 中看到原始目标,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>

这是我的运行方式:

蚂蚁仪器testSingle -DtestClass=com.company.tests.SomeTest

com.company.tests.SomeTest完整的测试类名称在哪里。

于 2016-06-30T06:42:53.087 回答