| page.title=Testing from Other IDEs | |
| parent.title=Testing | |
| parent.link=index.html | |
| @jd:body | |
| <div id="qv-wrapper"> | |
| <div id="qv"> | |
| <h2>In this document</h2> | |
| <ol> | |
| <li> | |
| <a href="#CreateTestProjectCommand">Working with Test Projects</a> | |
| <ol> | |
| <li> | |
| <a href="#CreateTestProject">Creating a test project</a> | |
| </li> | |
| <li> | |
| <a href="#UpdateTestProject">Updating a test project</a> | |
| </li> | |
| </ol> | |
| </li> | |
| <li> | |
| <a href="#CreateTestApp">Creating a Test Package</a> | |
| </li> | |
| <li> | |
| <a href="#RunTestsCommand">Running Tests</a> | |
| <ol> | |
| <li> | |
| <a href="#RunTestsAnt">Quick build and run with Ant</a> | |
| </li> | |
| <li> | |
| <a href="#RunTestsDevice">Running tests on a device or emulator</a> | |
| </li> | |
| </ol> | |
| </li> | |
| <li> | |
| <a href="#AMSyntax">Using the Instrument Command</a> | |
| <ol> | |
| <li> | |
| <a href="#AMOptionsSyntax">Instrument options</a> | |
| </li> | |
| <li> | |
| <a href="#RunTestExamples">Instrument examples</a> | |
| </li> | |
| </ol> | |
| </li> | |
| </ol> | |
| <h2>See Also</h2> | |
| <ol> | |
| <li> | |
| <a href="{@docRoot}tools/testing/testing_android.html"> | |
| Testing Fundamentals</a> | |
| </li> | |
| <li> | |
| <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> | |
| </li> | |
| </ol> | |
| </div> | |
| </div> | |
| <p> | |
| This document describes how to create and run tests directly from the command line. | |
| You can use the techniques described here if you are developing in an IDE other than Eclipse | |
| or if you prefer to work from the command line. This document assumes that you already know how | |
| to create a Android application in your programming environment. Before you start this | |
| document, you should read the topic | |
| <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>, | |
| which provides an overview of Android testing. | |
| </p> | |
| <p> | |
| If you are developing in Eclipse with ADT, you can set up and run your tests | |
| directly in Eclipse. For more information, please read | |
| <a href="{@docRoot}tools/testing/testing_eclipse.html"> | |
| Testing from Eclipse with ADT</a>. | |
| </p> | |
| <h2 id="CreateTestProjectCommand">Working with Test Projects</h2> | |
| <p> | |
| You use the <code>android</code> tool to create test projects. | |
| You also use <code>android</code> to convert existing test code into an Android test project, | |
| or to add the <code>test</code> Ant target to an existing Android test project. | |
| These operations are described in more detail in the section <a href="#UpdateTestProject"> | |
| Updating a test project</a>. The <code>test</code> target is described in | |
| <a href="#RunTestsAnt">Quick build and run with Ant</a>. | |
| </p> | |
| <h3 id="CreateTestProject">Creating a test project</h3> | |
| <p> | |
| To create a test project with the <code>android</code> tool, enter: | |
| </p> | |
| <pre> | |
| android create test-project -m <main_path> -n <project_name> -p <test_path> | |
| </pre> | |
| <p> | |
| You must supply all the flags. The following table explains them in detail: | |
| </p> | |
| <table> | |
| <tr> | |
| <th>Flag</th> | |
| <th>Value</th> | |
| <th>Description</th> | |
| </tr> | |
| <tr> | |
| <td><code>-m, --main</code></td> | |
| <td> | |
| Path to the project of the application under test, relative to the test package | |
| directory. | |
| </td> | |
| <td> | |
| For example, if the application under test is in <code>source/HelloAndroid</code>, and | |
| you want to create the test project in <code>source/HelloAndroidTest</code>, then the | |
| value of <code>--main</code> should be <code>../HelloAndroid</code>. | |
| <p> | |
| To learn more about choosing the location of test projects, please read | |
| <a href="{@docRoot}tools/testing/testing_android.html#TestProjects"> | |
| Testing Fundamentals</a>. | |
| </p> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>-n, --name</code></td> | |
| <td>Name that you want to give the test project.</td> | |
| <td> </td> | |
| </tr> | |
| <tr> | |
| <td><code>-p, --path</code></td> | |
| <td>Directory in which you want to create the new test project.</td> | |
| <td> | |
| The <code>android</code> tool creates the test project files and directory structure | |
| in this directory. If the directory does not exist, <code>android</code> creates it. | |
| </td> | |
| </tr> | |
| </table> | |
| <p> | |
| If the operation is successful, <code>android</code> lists to STDOUT the names of the files | |
| and directories it has created. | |
| </p> | |
| <p> | |
| This creates a new test project with the appropriate directories and build files. The directory | |
| structure and build file contents are identical to those in a regular Android application | |
| project. They are described in detail in the topic | |
| <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>. | |
| </p> | |
| <p> | |
| The operation also creates an <code>AndroidManifest.xml</code> file with instrumentation | |
| information. When you run the test, Android uses this information to load the application you | |
| are testing and control it with instrumentation. | |
| </p> | |
| <p> | |
| For example, suppose you create a project in the directory <code>~/source/HelloAndroid</code>, | |
| with the package name <code>com.example.helloandroid</code>, | |
| and the activity name <code>HelloAndroid</code>. You can to create the test for this in | |
| <code>~/source/HelloAndroidTest</code>. To do so, you enter: | |
| </p> | |
| <pre> | |
| $ cd ~/source | |
| $ android create test-project -m ../HelloAndroid -n HelloAndroidTest -p HelloAndroidTest | |
| </pre> | |
| <p> | |
| This creates a directory called <code>~/src/HelloAndroidTest</code>. In the new directory you | |
| see the file <code>AndroidManifest.xml</code>. This file contains the following | |
| instrumentation-related elements and attributes: | |
| </p> | |
| <ul> | |
| <li> | |
| <code><application></code>: to contain the | |
| <code><uses-library></code> element. | |
| </li> | |
| <li> | |
| <code><uses-library android:name="android.test.runner"</code>: | |
| specifies this testing application uses the <code>android.test.runner</code> library. | |
| </li> | |
| <li> | |
| <code><instrumentation></code>: contains attributes that control Android | |
| instrumentation. The attributes are: | |
| <ul> | |
| <li> | |
| <code>android:name="android.test.InstrumentationTestRunner"</code>: | |
| {@link android.test.InstrumentationTestRunner} runs test cases. It extends both | |
| JUnit test case runner classes and Android instrumentation classes. | |
| </li> | |
| <li> | |
| <code>android:targetPackage="com.example.helloandroid"</code>: specifies | |
| that the tests in HelloAndroidTest should be run against the application with the | |
| <em>Android</em> package name <code>com.example.helloandroid</code>. | |
| </li> | |
| <li> | |
| <code>android:label="Tests for .HelloAndroid"</code>: specifies a | |
| user-readable label for the instrumentation class. By default, | |
| the <code>android</code> tool gives it the value "Tests for " plus | |
| the name of the main Activity of the application under test. | |
| </li> | |
| </ul> | |
| </li> | |
| </ul> | |
| <h3 id="UpdateTestProject">Updating a test project</h3> | |
| <p> | |
| You use the <code>android</code> tool when you need to change the path to the | |
| project of the application under test. If you are changing an existing test project created in | |
| Eclipse with ADT so that you can also build and run it from the command line, you must use the | |
| "create" operation. See the section <a href="#CreateTestProject">Creating a test project</a>. | |
| </p> | |
| <p class="note"> | |
| <strong>Note:</strong> If you change the Android package name of the application under test, | |
| you must <em>manually</em> change the value of the <code><android:targetPackage></code> | |
| attribute within the <code>AndroidManifest.xml</code> file of the test package. | |
| Running <code>android update test-project</code> does not do this. | |
| </p> | |
| <p> | |
| To update a test project with the <code>android</code> tool, enter: | |
| </p> | |
| <pre>android update test-project -m <main_path> -p <test_path></pre> | |
| <table> | |
| <tr> | |
| <th>Flag</th> | |
| <th>Value</th> | |
| <th>Description</th> | |
| </tr> | |
| <tr> | |
| <td><code>-m, --main</code></td> | |
| <td>The path to the project of the application under test, relative to the test project</td> | |
| <td> | |
| For example, if the application under test is in <code>source/HelloAndroid</code>, and | |
| the test project is in <code>source/HelloAndroidTest</code>, then the value for | |
| <code>--main</code> is <code>../HelloAndroid</code>. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>-p, --path</code></td> | |
| <td>The of the test project.</td> | |
| <td> | |
| For example, if the test project is in <code>source/HelloAndroidTest</code>, then the | |
| value for <code>--path</code> is <code>HelloAndroidTest</code>. | |
| </td> | |
| </tr> | |
| </table> | |
| <p> | |
| If the operation is successful, <code>android</code> lists to STDOUT the names of the files | |
| and directories it has created. | |
| </p> | |
| <h2 id="CreateTestApp">Creating a Test Package</h2> | |
| <p> | |
| Once you have created a test project, you populate it with a test package. | |
| The application does not require an {@link android.app.Activity Activity}, | |
| although you can define one if you wish. Although your test package can | |
| combine Activities, Android test class extensions, JUnit extensions, or | |
| ordinary classes, you should extend one of the Android test classes or JUnit classes, | |
| because these provide the best testing features. | |
| </p> | |
| <p> | |
| If you run your tests with {@link android.test.InstrumentationTestRunner} | |
| (or a related test runner), then it will run all the methods in each class. You can modify | |
| this behavior by using the {@link junit.framework.TestSuite TestSuite} class. | |
| </p> | |
| <p> | |
| To create a test package, start with one of Android's test classes in the Java package | |
| {@link android.test android.test}. These extend the JUnit | |
| {@link junit.framework.TestCase TestCase} class. With a few exceptions, the Android test | |
| classes also provide instrumentation for testing. | |
| </p> | |
| <p> | |
| For test classes that extend {@link junit.framework.TestCase TestCase}, you probably want to | |
| override the <code>setUp()</code> and <code>tearDown()</code> methods: | |
| </p> | |
| <ul> | |
| <li> | |
| <code>setUp()</code>: This method is invoked before any of the test methods in the class. | |
| Use it to set up the environment for the test. You can use <code>setUp()</code> | |
| to instantiate a new <code>Intent</code> object with the action <code>ACTION_MAIN</code>. | |
| You can then use this intent to start the Activity under test. | |
| <p class="note"> | |
| <strong>Note:</strong> If you override this method, call | |
| <code>super.setUp()</code> as the first statement in your code. | |
| </p> | |
| </li> | |
| <li> | |
| <code>tearDown()</code>: This method is invoked after all the test methods in the class. Use | |
| it to do garbage collection and re-setting before moving on to the next set of tests. | |
| <p class="note"><strong>Note:</strong> If you override this method, you must call | |
| <code>super.tearDown()</code> as the <em>last</em> statement in your code.</p> | |
| </li> | |
| </ul> | |
| <p> | |
| Another useful convention is to add the method <code>testPreConditions()</code> to your test | |
| class. Use this method to test that the application under test is initialized correctly. If this | |
| test fails, you know that the initial conditions were in error. When this happens, further | |
| test results are suspect, regardless of whether or not the tests succeeded. | |
| </p> | |
| <p> | |
| To learn more about creating test packages, see the topic <a | |
| href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>, | |
| which provides an overview of Android testing. If you prefer to follow a tutorial, | |
| try the <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing</a> | |
| tutorial, which leads you through the creation of tests for an actual Android application. | |
| </p> | |
| <h2 id="RunTestsCommand">Running Tests</h2> | |
| <p> | |
| You run tests from the command line, either with Ant or with an | |
| <a href="{@docRoot}tools/help/adb.html"> | |
| Android Debug Bridge (adb)</a> shell. | |
| </p> | |
| <h3 id="RunTestsAnt">Quick build and run with Ant</h3> | |
| <p> | |
| You can use Ant to run all the tests in your test project, using the target | |
| <code>test</code>, which is created automatically when you create a test project with | |
| the <code>android</code> tool. | |
| </p> | |
| <p> | |
| This target re-builds your main project and test project if necessary, installs the test | |
| application to the current AVD or device, and then runs all the test classes in the test | |
| application. The results are directed to <code>STDOUT</code>. | |
| </p> | |
| <p> | |
| You can update an existing test project to use this feature. To do this, use the | |
| <code>android</code> tool with the <code>update test-project</code> option. This is described | |
| in the section <a href="#UpdateTestProject">Updating a test project</a>. | |
| </p> | |
| <h3 id="RunTestsDevice">Running tests on a device or emulator</h3> | |
| <p> | |
| When you run tests from the command line with | |
| <a href="{@docRoot}tools/help/adb.html"> | |
| Android Debug Bridge (adb)</a>, you get more options for choosing the tests | |
| to run than with any other method. You can select individual test methods, filter tests | |
| according to their annotation, or specify testing options. Since the test run is controlled | |
| entirely from a command line, you can customize your testing with shell scripts in various ways. | |
| </p> | |
| <p> | |
| To run a test from the command line, you run <code>adb shell</code> to start a command-line | |
| shell on your device or emulator, and then in the shell run the <code>am instrument</code> | |
| command. You control <code>am</code> and your tests with command-line flags. | |
| </p> | |
| <p> | |
| As a shortcut, you can start an <code>adb</code> shell, call <code>am instrument</code>, and | |
| specify command-line flags all on one input line. The shell opens on the device or emulator, | |
| runs your tests, produces output, and then returns to the command line on your computer. | |
| </p> | |
| <p> | |
| To run a test with <code>am instrument</code>: | |
| </p> | |
| <ol> | |
| <li> | |
| If necessary, rebuild your main application and test package. | |
| </li> | |
| <li> | |
| Install your test package and main application Android package files | |
| (<code>.apk</code> files) to your current Android device or emulator</li> | |
| <li> | |
| At the command line, enter: | |
| <pre> | |
| $ adb shell am instrument -w <test_package_name>/<runner_class> | |
| </pre> | |
| <p> | |
| where <code><test_package_name></code> is the Android package name of your test | |
| application, and <code><runner_class></code> is the name of the Android test | |
| runner class you are using. The Android package name is the value of the | |
| <code>package</code> attribute of the <code>manifest</code> element in the manifest file | |
| (<code>AndroidManifest.xml</code>) of your test package. The Android test runner | |
| class is usually {@link android.test.InstrumentationTestRunner}. | |
| </p> | |
| <p> | |
| Your test results appear in <code>STDOUT</code>. | |
| </p> | |
| </li> | |
| </ol> | |
| <p> | |
| This operation starts an <code>adb</code> shell, then runs <code>am instrument</code> | |
| with the specified parameters. This particular form of the command will run all of the tests | |
| in your test package. You can control this behavior with flags that you pass to | |
| <code>am instrument</code>. These flags are described in the next section. | |
| </p> | |
| <h2 id="AMSyntax">Using the am instrument Command</h2> | |
| <p> | |
| The general syntax of the <code>am instrument</code> command is: | |
| </p> | |
| <pre> | |
| am instrument [flags] <test_package>/<runner_class> | |
| </pre> | |
| <p> | |
| The main input parameters to <code>am instrument</code> are described in the following table: | |
| </p> | |
| <table> | |
| <tr> | |
| <th> | |
| Parameter | |
| </th> | |
| <th> | |
| Value | |
| </th> | |
| <th> | |
| Description | |
| </th> | |
| </tr> | |
| <tr> | |
| <td> | |
| <code><test_package></code> | |
| </td> | |
| <td> | |
| The Android package name of the test package. | |
| </td> | |
| <td> | |
| The value of the <code>package</code> attribute of the <code>manifest</code> | |
| element in the test package's manifest file. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| <code><runner_class></code> | |
| </td> | |
| <td> | |
| The class name of the instrumented test runner you are using. | |
| </td> | |
| <td> | |
| This is usually {@link android.test.InstrumentationTestRunner}. | |
| </td> | |
| </tr> | |
| </table> | |
| <p> | |
| The flags for <code>am instrument</code> are described in the following table: | |
| </p> | |
| <table> | |
| <tr> | |
| <th> | |
| Flag | |
| </th> | |
| <th> | |
| Value | |
| </th> | |
| <th> | |
| Description | |
| </th> | |
| </tr> | |
| <tr> | |
| <td> | |
| <code>-w</code> | |
| </td> | |
| <td> | |
| (none) | |
| </td> | |
| <td> | |
| Forces <code>am instrument</code> to wait until the instrumentation terminates | |
| before terminating itself. The net effect is to keep the shell open until the tests | |
| have finished. This flag is not required, but if you do not use it, you will not | |
| see the results of your tests. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| <code>-r</code> | |
| </td> | |
| <td> | |
| (none) | |
| </td> | |
| <td> | |
| Outputs results in raw format. Use this flag when you want to collect | |
| performance measurements, so that they are not formatted as test results. This flag is | |
| designed for use with the flag <code>-e perf true</code> (documented in the section | |
| <a href="#AMOptionsSyntax">Instrument options</a>). | |
| </td> | |
| </tr> | |
| <tr> | |
| <td> | |
| <code>-e</code> | |
| </td> | |
| <td> | |
| <test_options> | |
| </td> | |
| <td> | |
| Provides testing options as key-value pairs. The | |
| <code>am instrument</code> tool passes these to the specified instrumentation class | |
| via its <code>onCreate()</code> method. You can specify multiple occurrences of | |
| <code>-e <test_options></code>. The keys and values are described in the | |
| section <a href="#AMOptionsSyntax">am instrument options</a>. | |
| <p> | |
| The only instrumentation class that uses these key-value pairs is | |
| {@link android.test.InstrumentationTestRunner} (or a subclass). Using them with | |
| any other class has no effect. | |
| </p> | |
| </td> | |
| </tr> | |
| </table> | |
| <h3 id="AMOptionsSyntax">am instrument options</h3> | |
| <p> | |
| The <code>am instrument</code> tool passes testing options to | |
| <code>InstrumentationTestRunner</code> or a subclass in the form of key-value pairs, | |
| using the <code>-e</code> flag, with this syntax: | |
| </p> | |
| <pre> | |
| -e <key> <value> | |
| </pre> | |
| <p> | |
| Some keys accept multiple values. You specify multiple values in a comma-separated list. | |
| For example, this invocation of <code>InstrumentationTestRunner</code> provides multiple | |
| values for the <code>package</code> key: | |
| </p> | |
| <pre> | |
| $ adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \ | |
| > com.android.test/android.test.InstrumentationTestRunner | |
| </pre> | |
| <p> | |
| The following table describes the key-value pairs and their result. Please review the | |
| <strong>Usage Notes</strong> following the table. | |
| </p> | |
| <table> | |
| <tr> | |
| <th>Key</th> | |
| <th>Value</th> | |
| <th>Description</th> | |
| </tr> | |
| <tr> | |
| <td> | |
| <code>package</code> | |
| </td> | |
| <td> | |
| <Java_package_name> | |
| </td> | |
| <td> | |
| The fully-qualified <em>Java</em> package name for one of the packages in the test | |
| application. Any test case class that uses this package name is executed. Notice that | |
| this is not an <em>Android</em> package name; a test package has a single | |
| Android package name but may have several Java packages within it. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td rowspan="2"><code>class</code></td> | |
| <td><class_name></td> | |
| <td> | |
| The fully-qualified Java class name for one of the test case classes. Only this test | |
| case class is executed. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><class_name><strong>#</strong>method name</td> | |
| <td> | |
| A fully-qualified test case class name, and one of its methods. Only this method is | |
| executed. Note the hash mark (#) between the class name and the method name. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>func</code></td> | |
| <td><code>true</code></td> | |
| <td> | |
| Runs all test classes that extend {@link android.test.InstrumentationTestCase}. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>unit</code></td> | |
| <td><code>true</code></td> | |
| <td> | |
| Runs all test classes that do <em>not</em> extend either | |
| {@link android.test.InstrumentationTestCase} or | |
| {@link android.test.PerformanceTestCase}. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>size</code></td> | |
| <td> | |
| [<code>small</code> | <code>medium</code> | <code>large</code>] | |
| </td> | |
| <td> | |
| Runs a test method annotated by size. The annotations are <code>@SmallTest</code>, | |
| <code>@MediumTest</code>, and <code>@LargeTest</code>. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>perf</code></td> | |
| <td><code>true</code></td> | |
| <td> | |
| Runs all test classes that implement {@link android.test.PerformanceTestCase}. | |
| When you use this option, also specify the <code>-r</code> flag for | |
| <code>am instrument</code>, so that the output is kept in raw format and not | |
| re-formatted as test results. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>debug</code></td> | |
| <td><code>true</code></td> | |
| <td> | |
| Runs tests in debug mode. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>log</code></td> | |
| <td><code>true</code></td> | |
| <td> | |
| Loads and logs all specified tests, but does not run them. The test | |
| information appears in <code>STDOUT</code>. Use this to verify combinations of other | |
| filters and test specifications. | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>emma</code></td> | |
| <td><code>true</code></td> | |
| <td> | |
| Runs an EMMA code coverage analysis and writes the output to | |
| <code>/data//coverage.ec</code> on the device. To override the file location, use the | |
| <code>coverageFile</code> key that is described in the following entry. | |
| <p class="note"> | |
| <strong>Note:</strong> This option requires an EMMA-instrumented build of the test | |
| application, which you can generate with the <code>coverage</code> target. | |
| </p> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td><code>coverageFile</code></td> | |
| <td><code><filename></code></td> | |
| <td> | |
| Overrides the default location of the EMMA coverage file on the device. Specify this | |
| value as a path and filename in UNIX format. The default filename is described in the | |
| entry for the <code>emma</code> key. | |
| </td> | |
| </tr> | |
| </table> | |
| <strong><code>-e</code> Flag Usage Notes</strong> | |
| <ul> | |
| <li> | |
| <code>am instrument</code> invokes | |
| {@link android.test.InstrumentationTestRunner#onCreate(Bundle)} | |
| with a {@link android.os.Bundle} containing the key-value pairs. | |
| </li> | |
| <li> | |
| The <code>package</code> key takes precedence over the <code>class</code> key. If you | |
| specifiy a package, and then separately specify a class within that package, Android | |
| will run all the tests in the package and ignore the <code>class</code> key. | |
| </li> | |
| <li> | |
| The <code>func</code> key and <code>unit</code> key are mutually exclusive. | |
| </li> | |
| </ul> | |
| <h3 id="RunTestExamples">Usage examples</h3> | |
| <p> | |
| The following sections provide examples of using <code>am instrument</code> to run tests. | |
| They are based on the following structure:</p> | |
| <ul> | |
| <li> | |
| The test package has the Android package name <code>com.android.demo.app.tests</code> | |
| </li> | |
| <li> | |
| There are three test classes: | |
| <ul> | |
| <li> | |
| <code>UnitTests</code>, which contains the methods | |
| <code>testPermissions</code> and <code>testSaveState</code>. | |
| </li> | |
| <li> | |
| <code>FunctionTests</code>, which contains the methods | |
| <code>testCamera</code>, <code>testXVGA</code>, and <code>testHardKeyboard</code>. | |
| </li> | |
| <li> | |
| <code>IntegrationTests</code>, | |
| which contains the method <code>testActivityProvider</code>. | |
| </li> | |
| </ul> | |
| </li> | |
| <li> | |
| The test runner is {@link android.test.InstrumentationTestRunner}. | |
| </li> | |
| </ul> | |
| <h4>Running the entire test package</h4> | |
| <p> | |
| To run all of the test classes in the test package, enter: | |
| </p> | |
| <pre> | |
| $ adb shell am instrument -w com.android.demo.app.tests/android.test.InstrumentationTestRunner | |
| </pre> | |
| <h4>Running all tests in a test case class</h4> | |
| <p> | |
| To run all of the tests in the class <code>UnitTests</code>, enter: | |
| </p> | |
| <pre> | |
| $ adb shell am instrument -w \ | |
| > -e class com.android.demo.app.tests.UnitTests \ | |
| > com.android.demo.app.tests/android.test.InstrumentationTestRunner | |
| </pre> | |
| <p> | |
| <code>am instrument</code> gets the value of the <code>-e</code> flag, detects the | |
| <code>class</code> keyword, and runs all the methods in the <code>UnitTests</code> class. | |
| </p> | |
| <h4>Selecting a subset of tests</h4> | |
| <p> | |
| To run all of the tests in <code>UnitTests</code>, and the <code>testCamera</code> method in | |
| <code>FunctionTests</code>, enter: | |
| </p> | |
| <pre> | |
| $ adb shell am instrument -w \ | |
| > -e class com.android.demo.app.tests.UnitTests,com.android.demo.app.tests.FunctionTests#testCamera \ | |
| > com.android.demo.app.tests/android.test.InstrumentationTestRunner | |
| </pre> | |
| <p> | |
| You can find more examples of the command in the documentation for | |
| {@link android.test.InstrumentationTestRunner}. | |
| </p> |