Most visited

Recently visited

Added in API level 1
Deprecated since API level 24

InstrumentationTestRunner

public class InstrumentationTestRunner
extends Instrumentation implements TestSuiteProvider

java.lang.Object
   ↳ android.app.Instrumentation
     ↳ android.test.InstrumentationTestRunner
Known Direct Subclasses


此类在API级别24中已被弃用。
改为使用AndroidJUnitRunner 应使用Android Testing Support Library编写新的测试。

一个 Instrumentation运行各种类型的 TestCase针对Android包(应用)秒。

Developer Guides

有关应用程序测试的更多信息,请阅读 Testing开发人员指南。

Typical Usage

  1. Write TestCases that perform unit, functional, or performance tests against the classes in your package. Typically these are subclassed from:
  2. Set the android:targetPackage attribute of the <instrumentation> element in the test package's manifest. You should set the attribute value to the package name of the target application under test.
  3. Run the instrumentation using "adb shell am instrument -w", with no optional arguments, to run all tests (except performance tests).
  4. Run the instrumentation using "adb shell am instrument -w", with the argument '-e func true' to run all functional tests. These are tests that derive from InstrumentationTestCase.
  5. Run the instrumentation using "adb shell am instrument -w", with the argument '-e unit true' to run all unit tests. These are tests that do notderive from InstrumentationTestCase (and are not performance tests).
  6. Run the instrumentation using "adb shell am instrument -w", with the argument '-e class' set to run an individual TestCase.

Running all tests: adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner

Running all small tests: adb shell am instrument -w -e size small com.android.foo/android.test.InstrumentationTestRunner

Running all medium tests: adb shell am instrument -w -e size medium com.android.foo/android.test.InstrumentationTestRunner

Running all large tests: adb shell am instrument -w -e size large com.android.foo/android.test.InstrumentationTestRunner

Filter test run to tests with given annotation: adb shell am instrument -w -e annotation com.android.foo.MyAnnotation com.android.foo/android.test.InstrumentationTestRunner

If used with other options, the resulting test run will contain the union of the two options. e.g. "-e size large -e annotation com.android.foo.MyAnnotation" will run only tests with both the LargeTest and "com.android.foo.MyAnnotation" annotations.

Filter test run to tests without given annotation: adb shell am instrument -w -e notAnnotation com.android.foo.MyAnnotation com.android.foo/android.test.InstrumentationTestRunner

Running a single testcase: adb shell am instrument -w -e class com.android.foo.FooTest com.android.foo/android.test.InstrumentationTestRunner

Running a single test: adb shell am instrument -w -e class com.android.foo.FooTest#testFoo com.android.foo/android.test.InstrumentationTestRunner

Running multiple tests: adb shell am instrument -w -e class com.android.foo.FooTest,com.android.foo.TooTest com.android.foo/android.test.InstrumentationTestRunner

Running all tests in a java package: adb shell am instrument -w -e package com.android.foo.subpkg com.android.foo/android.test.InstrumentationTestRunner

Including performance tests: adb shell am instrument -w -e perf true com.android.foo/android.test.InstrumentationTestRunner

To debug your tests, set a break point in your code and pass: -e debug true

To run in 'log only' mode -e log true This option will load and iterate through all test classes and methods, but will bypass actual test execution. Useful for quickly obtaining info on the tests to be executed by an instrumentation command.

To generate EMMA code coverage: -e coverage true Note: this requires an emma instrumented build. By default, the code coverage results file will be saved in a /data/ /coverage.ec file, unless overridden by coverageFile flag (see below)

To specify EMMA code coverage results file path: -e coverageFile /sdcard/myFile.ec
in addition to the other arguments.

Summary

Constants

String REPORT_KEY_NAME_CLASS

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识当前测试类的名称。

String REPORT_KEY_NAME_TEST

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识当前测试的名称。

String REPORT_KEY_NUM_CURRENT

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识当前测试的序列号。

String REPORT_KEY_NUM_TOTAL

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识正在运行的测试的总数。

String REPORT_KEY_STACK

如果包含在发送到IInstrumentationWatcher的状态包中,则此键标识描述错误或故障的堆栈跟踪。

String REPORT_VALUE_ID

该值如果与密钥 REPORT_KEY_IDENTIFIER一起存储, REPORT_KEY_IDENTIFIER InstrumentationTestRunner标识为报告的来源。

int REPORT_VALUE_RESULT_ERROR

测试完成时出现错误。

int REPORT_VALUE_RESULT_FAILURE

测试以失败告终。

int REPORT_VALUE_RESULT_OK

测试成功完成。

int REPORT_VALUE_RESULT_START

测试正在开始。

Inherited constants

From class android.app.Instrumentation

Public constructors

InstrumentationTestRunner()

Public methods

TestSuite getAllTests()

重写此操作以定义要在包中运行的所有测试。

Bundle getArguments()

获取传递给这个工具的参数。

ClassLoader getLoader()

覆盖它以提供对包的类加载器的访问。

TestSuite getTestSuite()
void onCreate(Bundle arguments)

在仪器启动时调用,在加载任何应用程序代码之前。

void onStart()

检测线程进入执行的方法。

Protected methods

AndroidTestRunner getAndroidTestRunner()

Inherited methods

From class android.app.Instrumentation
From class java.lang.Object
From interface android.test.TestSuiteProvider

Constants

REPORT_KEY_NAME_CLASS

Added in API level 1
String REPORT_KEY_NAME_CLASS

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识当前测试类的名称。 这与任何状态消息一起发送,描述正在启动或完成的特定测试。

常数值:“class”

REPORT_KEY_NAME_TEST

Added in API level 1
String REPORT_KEY_NAME_TEST

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识当前测试的名称。 这与任何状态消息一起发送,描述正在启动或完成的特定测试。

常数值:“测试”

REPORT_KEY_NUM_CURRENT

Added in API level 1
String REPORT_KEY_NUM_CURRENT

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识当前测试的序列号。 这与任何状态消息一起发送,描述正在启动或完成的特定测试。

常数值:“当前”

REPORT_KEY_NUM_TOTAL

Added in API level 1
String REPORT_KEY_NUM_TOTAL

如果包含在发送到IInstrumentationWatcher的状态或最终包中,则此键标识正在运行的测试的总数。 这是与所有状态消息一起发送的。

常量值:“numtests”

REPORT_KEY_STACK

Added in API level 1
String REPORT_KEY_STACK

如果包含在发送到IInstrumentationWatcher的状态包中,则此键标识描述错误或故障的堆栈跟踪。 这是与任何状态消息一起发送描述正在完成的特定测试。

常量值:“堆栈”

REPORT_VALUE_ID

Added in API level 1
String REPORT_VALUE_ID

该值如果与密钥REPORT_KEY_IDENTIFIER一起存储, REPORT_KEY_IDENTIFIER InstrumentationTestRunner标识为报告的来源。 这是与所有状态消息一起发送的。

常量值:“InstrumentationTestRunner”

REPORT_VALUE_RESULT_ERROR

Added in API level 1
int REPORT_VALUE_RESULT_ERROR

测试完成时出现错误。

常量值:-1(0xffffffff)

REPORT_VALUE_RESULT_FAILURE

Added in API level 1
int REPORT_VALUE_RESULT_FAILURE

测试以失败告终。

常量值:-2(0xfffffffe)

REPORT_VALUE_RESULT_OK

Added in API level 1
int REPORT_VALUE_RESULT_OK

测试成功完成。

常量值:0(0x00000000)

REPORT_VALUE_RESULT_START

Added in API level 1
int REPORT_VALUE_RESULT_START

测试正在开始。

常数值:1(0x00000001)

Public constructors

InstrumentationTestRunner

Added in API level 1
InstrumentationTestRunner ()

Public methods

getAllTests

Added in API level 1
TestSuite getAllTests ()

重写此操作以定义要在包中运行的所有测试。

Returns
TestSuite

getArguments

Added in API level 18
Bundle getArguments ()

获取传递给这个工具的参数。

Returns
Bundle the Bundle object

getLoader

Added in API level 1
ClassLoader getLoader ()

覆盖它以提供对包的类加载器的访问。

Returns
ClassLoader

getTestSuite

Added in API level 1
TestSuite getTestSuite ()

Returns
TestSuite

onCreate

Added in API level 1
void onCreate (Bundle arguments)

在仪器启动时调用,在加载任何应用程序代码之前。 通常这将被实现,只需调用start()开始检测线程,然后将继续执行onStart()

如果你不需要你自己的线程 - 那就是你正在编写你的工具来完全异步(返回到事件循环以便应用程序可以运行),那么你可以简单地在这里开始你的工具,例如调用 startActivity(Intent)开始适当的第一个应用程序的活动。

Parameters
arguments Bundle: Any additional arguments that were supplied when the instrumentation was started.

onStart

Added in API level 1
void onStart ()

检测线程进入执行的方法。 这使您可以在与应用程序不同的线程中运行检测代码,以便它可以执行阻止操作,例如sendKeySync(KeyEvent)startActivitySync(Intent)

当这个函数完成时,你通常会想调用finish()来结束你的检测。

Protected methods

getAndroidTestRunner

Added in API level 1
AndroidTestRunner getAndroidTestRunner ()

Returns
AndroidTestRunner

Hooray!