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