371 lines
16 KiB
Plaintext
371 lines
16 KiB
Plaintext
page.title=Testing In Eclipse, with ADT
|
|
@jd:body
|
|
|
|
<div id="qv-wrapper">
|
|
<div id="qv">
|
|
<h2>In this document</h2>
|
|
<ol>
|
|
<li><a href="#CreateTestProjectEclipse">Creating a Test Project</a></li>
|
|
<li><a href="#CreateTestAppEclipse">Creating a Test Application</a></li>
|
|
<li><a href="#RunTestEclipse">Running Tests</a></li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
This topic explains how create and run tests of Android applications in Eclipse with ADT.
|
|
|
|
with the basic processes for creating and running applications with ADT, as described in
|
|
<a href="{@docRoot}guide/developing/eclipse-adt.html">Developing In Eclipse, with ADT</a>.
|
|
|
|
Before you read this topic, you should read about how to create a Android application with the
|
|
basic processes for creating and running applications with ADT, as described in
|
|
<a href="{@docRoot}guide/developing/eclipse-adt.html">Developing In Eclipse, with ADT</a>.
|
|
You may also want to read
|
|
<a href="{@docRoot}guide/topics/testing/testing_android.html">Testing and Instrumentation</a>,
|
|
which provides an overview of the Android testing framework.
|
|
</p>
|
|
<p>
|
|
ADT provides several features that help you set up and manage your testing environment
|
|
effectively:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
It lets you quickly create a test project and link it to the application under test.
|
|
When it creates the test project, it automatically inserts the necessary
|
|
<code><instrumentation></code> element in the test application's manifest file.
|
|
</li>
|
|
<li>
|
|
It lets you quickly import the classes of the application under test, so that your
|
|
tests can inspect them.
|
|
</li>
|
|
<li>
|
|
It lets you create run configurations for your test application and include in
|
|
them flags that are passed to the Android testing framework.
|
|
</li>
|
|
<li>
|
|
It lets you run your test application without leaving Eclipse. ADT builds both the
|
|
application under test and the test application automatically, installs them if
|
|
necessary to your device or emulator, runs the test application, and displays the
|
|
results in a separate window in Eclipse.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
If you are not developing in Eclipse or you want to learn how to create and run tests from the
|
|
command line, see
|
|
<a href="{@docRoot}guide/developing/testing/testing_otheride.html">Testing in Other IDEs</a>.
|
|
</p>
|
|
<h2 id="CreateTestProjectEclipse">Creating a Test Project</h2>
|
|
<p>
|
|
To set up a test environment for your Android application, you must first create a separate
|
|
application project that holds the test code. The new project follows the directory structure
|
|
used for any Android application. It includes the same types of content and files, such as
|
|
source code, resources, a manifest file, and so forth. The test application you
|
|
create is connected to the application under test by an
|
|
<a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">
|
|
<code><instrumentation></code></a> element in its manifest file.
|
|
</p>
|
|
<p>
|
|
The <strong>New Android Test Project</strong> dialog makes it easy for you to generate a
|
|
new test project that has the proper structure, including the
|
|
<code><instrumentation></code> element in the manifest file. You can use the New Android
|
|
Test Project dialog to generate the test project at any time. The dialog appears just after you
|
|
create a new Android main application project, but you can also run it to create a test project
|
|
for a project that you created previously.
|
|
</p>
|
|
<p>
|
|
To create a test project in Eclipse with ADT:
|
|
</p>
|
|
<ol>
|
|
<li>
|
|
In Eclipse, select <strong>File > New > Other</strong>. This
|
|
opens the Select a Wizard dialog.
|
|
</li>
|
|
<li>
|
|
In the dialog, in the Wizards drop-down list,
|
|
find the entry for Android, then click the toggle to the left. Select
|
|
Android Test Project, then at the bottom
|
|
of the dialog click Next. The New Android Test Project wizard appears.
|
|
</li>
|
|
<li>
|
|
Enter a project name. You may use any name, but you may want to
|
|
associate the name with the project name for your Application. One
|
|
way to do this is to take the Application's project name, append the
|
|
string "Test" to it, and then use this as the test case project name.
|
|
</li>
|
|
<li>
|
|
In the Test Target panel, set
|
|
An Existing Android Project, click
|
|
Browse, then select your Android application from
|
|
the list. You now see that the wizard has completed the Test
|
|
Target Package, Application Name, and
|
|
Package Name fields for you (the latter two are in
|
|
the Properties panel).
|
|
</li>
|
|
<li>
|
|
In the Build Target panel, select the Android SDK
|
|
platform that you will use to test your application. Make this the same as the
|
|
build target of the application under test.
|
|
</li>
|
|
<li>
|
|
Click Finish to complete the wizard. If
|
|
Finish is disabled, look
|
|
for error messages at the top of the wizard dialog, and then fix
|
|
any problems.
|
|
</li>
|
|
</ol>
|
|
<p>
|
|
|
|
</p>
|
|
<h2 id="CreateTestAppEclipse">Creating a Test Application</h2>
|
|
<p>
|
|
Once you have created a test project, you populate it with a test
|
|
Android application. This application does not require an {@link android.app.Activity Activity},
|
|
although you can define one if you wish. Although your test application 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>
|
|
Test applications do not have an Android GUI. Instead, when you run the application in
|
|
Eclipse with ADT, its results appear in the JUnit view. If you run
|
|
your tests with {@link android.test.InstrumentationTestRunner 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 application, 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 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>
|
|
The Resources tab contains an <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a>
|
|
tutorial with more information about creating test classes and methods.
|
|
</p>
|
|
<h2 id="RunTestEclipse">Running Tests</h2>
|
|
<div class="sidebox-wrapper">
|
|
<div class="sidebox">
|
|
<h2>Running tests from the command line</h2>
|
|
<p>
|
|
If you've created your tests in Eclipse, you can still run your tests and test
|
|
suites by using command-line tools included with the Android SDK. You may want to
|
|
do this, for example, if you have a large number of tests to run, if you have a
|
|
large test case, or if you want a fine level of control over which tests are run at
|
|
a particular time.
|
|
</p>
|
|
<p>
|
|
To run tests created in Eclipse with ADT with command-line tools, you must first
|
|
install additional files into the test project using the <code>android</code> tool's
|
|
"create test-project" option. To see how to do this, read the section
|
|
<a href="{@docRoot}guide/developing/testing/testing_otheride.html#CreateProject">
|
|
Creating a test project</a> in the topic
|
|
<a href="{@docRoot}guide/developing/testing/testing_otheride.html">Testing in Other
|
|
IDEs</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<p>
|
|
When you run a test application in Eclipse with ADT, the output appears in
|
|
an Eclipse view panel. You can run the entire test application, one class, or one
|
|
method of a class. To do this, Eclipse runs the <code>adb</code> command for running a test application, and
|
|
displays the output, so there is no difference between running tests inside Eclipse and running them from the command line.
|
|
</p>
|
|
<p>
|
|
As with any other application, to run a test application in Eclipse with ADT you must either attach a device to your
|
|
computer or use the Android emulator. If you use the emulator, you must have an Android Virtual Device (AVD) that uses
|
|
the same target
|
|
</p>
|
|
<p>
|
|
To run a test in Eclipse, you have two choices:</p>
|
|
<ol>
|
|
<li>
|
|
Run a test just as you run an application, by selecting
|
|
<strong>Run As... > Android JUnit Test</strong> from the project's context menu or
|
|
from the main menu's <strong>Run</strong> item.
|
|
</li>
|
|
<li>
|
|
Create an Eclipse run configuration for your test project. This is useful if you want multiple test suites, each consisting of selected tests from the project. To run
|
|
a test suite, you run the test configuration.
|
|
<p>
|
|
Creating and running test configurations is described in the next section.
|
|
</p>
|
|
</li>
|
|
</ol>
|
|
<p>To create and run a test suite using a run configuration:</p>
|
|
<ol>
|
|
<li>
|
|
In the Package Explorer, select the test
|
|
project, then from the main menu, select
|
|
<strong>Run > Run Configurations...</strong>. The
|
|
Run Configurations dialog appears.
|
|
</li>
|
|
<li>
|
|
In the left-hand pane, find the
|
|
Android JUnit Test entry.
|
|
In the right-hand pane, click the Test tab.
|
|
The Name: text box
|
|
shows the name of your project. The
|
|
Test class: dropdown box shows one your project's classes
|
|
test classes in your project.
|
|
</li>
|
|
<li>
|
|
To run one test class, click Run a single test, then enter your project
|
|
name in the Project: text box and the class name in the
|
|
Test class: text box.
|
|
<p>
|
|
To run all the test classes,
|
|
click Run all tests in the selected project or package,
|
|
then enter the project or package name in the text box.
|
|
</p>
|
|
</li>
|
|
<li>
|
|
Now click the Target tab.
|
|
<ul>
|
|
<li>
|
|
Optional: If you are using the emulator, click
|
|
Automatic, then in the Android Virtual Device (AVD)
|
|
selection table, select an existing AVD.
|
|
</li>
|
|
<li>
|
|
In the Emulator Launch Parameters pane, set the
|
|
Android emulator flags you want to use. These are documented in the topic
|
|
<a href="{@docRoot}guide/developing/tools/emulator.html#startup-options">Emulator Startup Options</a>.
|
|
</li>
|
|
</ul>
|
|
<li>
|
|
Click the Common tab. In the
|
|
Save As pane, click Local to save
|
|
this run configuration locally, or click Shared to
|
|
save it to another project.
|
|
</li>
|
|
<li>
|
|
Optional: Add the configuration to the Run toolbar and the <strong>Favorites</strong>
|
|
menu: in the Display in Favorites pane
|
|
click the checkbox next to Run.
|
|
</li>
|
|
<li>
|
|
Optional: To add this configuration to the <strong>Debug</strong> menu and toolbar, click
|
|
the checkbox next to Debug.
|
|
</li>
|
|
<li>
|
|
To save your settings, click Close.<br/>
|
|
<p class="note"><strong>Note:</strong> Although you can run the test immediately by
|
|
clicking Run, you should save the test first and then
|
|
run it by selecting it from the Eclipse standard toolbar.</p>
|
|
</li>
|
|
<li>
|
|
On the Eclipse standard toolbar, click the down arrow next to the
|
|
green Run arrow. This displays a menu of saved Run and Debug
|
|
configurations.
|
|
</li>
|
|
<li>
|
|
Select the test run configuration you just created.
|
|
</li>
|
|
<li>
|
|
The progress of your test appears in the Console view.
|
|
You should see the following messages, among others:
|
|
<ul>
|
|
<li>
|
|
<code>Performing Android.test.InstrumentationTestRunner JUnit launch</code><br>
|
|
The class name that proceeds "JUnit" depends on the Android instrumentation
|
|
class you have chosen.
|
|
</li>
|
|
<li>
|
|
If you are using an emulator and you have not yet started it, then you will see
|
|
the message:
|
|
<p>
|
|
<code>Automatic Target Mode: launching new emulator with compatible
|
|
AVD <em>avdname</em></code><br>(where <em>avdname</em> is the name of
|
|
the AVD you are using.)
|
|
</p>
|
|
</li>
|
|
<li>
|
|
If you have not already installed your test application, then you will see
|
|
the message:
|
|
<p>
|
|
<code>Uploading <em>testclass</em>.apk onto device '<em>device-id</em>'</code><br>
|
|
where <em>testclass</em> is the name of your unit test class and <em>device-id</em>
|
|
is the name and port for your test device or emulator, followed by the message <code>Installing <em>testclass</em>.apk</code>
|
|
</p>
|
|
</li>
|
|
<li>
|
|
<code>Launching instrumentation Android.test.InstrumentationTestRunner on device <em>device-id</em></code>.<br>
|
|
This indicates that Android's Instrumentation system is now testing your code. Again, the
|
|
instrumentation class name depends on the Android instrumentation class you have chosen.
|
|
</li>
|
|
<li>
|
|
<code>Test run complete</code>.<br> When you see this, your unit tests have finished.
|
|
</li>
|
|
</ul>
|
|
</ol>
|
|
<p>
|
|
The test results appear in the JUnit view. This is divided into an upper summary pane,
|
|
and a lower stack trace pane.
|
|
</p>
|
|
<p>
|
|
The upper pane contains test information. In the pane's header, you see the following
|
|
information:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Total time elapsed for the test application (labeled Finished after <em>x</em> seconds).
|
|
</li>
|
|
<li>
|
|
Number of runs (Runs:) - the number of tests in the entire test class.
|
|
</li>
|
|
<li>
|
|
Number of errors (Errors:) - the number of program errors and exceptions encountered
|
|
during the test run.
|
|
</li>
|
|
<li>
|
|
Number of failures (Failures:) - the number of test failures encountered during the test
|
|
run. This is the number of assertion failures. A test can fail even if the program does
|
|
not encounter an error.
|
|
</li>
|
|
<li>
|
|
A progress bar. The progress bar extends from left to right as the tests run. If all the
|
|
tests succeed, the bar remains green. If a test fails, the bar turns from green to red.
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
The body of the upper pane contains the details of the test run. For each test case class
|
|
that was run, you see a line with the class name. To look at the results for the individual
|
|
test methods in that class, you click the left arrow to expand the line. You now see a
|
|
line for each test method in the class, and to its right the time it took to run.
|
|
If you double-click the method name, Eclipse opens the test class source in an editor view
|
|
pane and moves the focus to the first line of the test method.
|
|
</p>
|
|
<p>
|
|
The lower pane is for stack traces. If you highlight a failed test in the upper pane, the
|
|
lower pane contains a stack trace for the test. If a line corresponds to a point in your
|
|
test code, you can double-click it to display the code in an editor view pane, with the
|
|
line highlighted. For a successful test, the lower pane is empty.
|
|
</p>
|