Doc Change: Files for the Spinner and SpinnerTest sample applications, part of Activity Testing tutorial

Change-Id: If9b6f214cdad870257efc34193eed846cde2ec47
This commit is contained in:
Joe Malin
2010-04-20 19:54:58 -07:00
parent e73e4911f3
commit bee8cd502f
4 changed files with 71 additions and 30 deletions

View File

@@ -1,22 +1,21 @@
<p>
This sample is the application under test for the
<a href="../../../resources/tutorials/testing/activity_test.html">Activity
Testing Tutorial</a>. It contains a single Activity that displays a
Spinner widget backed by an array of strings containing the names of the planets
in the Solar System. When an entry is selected from the Spinner, the entry is
displayed in a text box.
This sample is a simple application that serves as an application under test
for the <a href="../SpinnerTest/index.html">SpinnerTest</a> test application example.
</p>
<p>
An important part of this application is state management. When the application
is first run, the spinner widget displays a default selection of
&quot;Earth&quot;. Thereafter, the application saves a selection as soon as it
This application illustrates basic state management across the Android application life cycle,
mainly for the purpose of highlighting common patterns of Activity testing. When the application
is first run, the spinner widget displays a default selection of &quot;Earth&quot;.
Thereafter, the application saves a selection as soon as it
is made. The application remembers the selection from invocation to invocation, even
if the device reboots.
</p>
<p>
For more information about this application, see the Activity Testing Tutorial.
The test application for this application is in the <a
href="../SpinnerTest/index.html">SpinnerTest</a> sample application.
The test application <a href="../SpinnerTest/index.html">SpinnerTest</a>
shows you how to set up tests to monitor and prevent code regressions in the
management of state across invocations and power cycles.
</p>
<p>
For more information about this application, see the
<a href="../../../resources/tutorials/testing/activity_test.html">Activity Testing</a> tutorial.
</p>
<img alt="The Spinner application" src="../images/testing/spinner_main_screen.png" />

View File

@@ -26,6 +26,7 @@
package="com.android.example.spinner.test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="3" />
<application android:label="@string/app_name">
<!--
this package needs to link against the android.test library,

View File

@@ -1,9 +1,52 @@
<p>
This sample is the test application for the
<a href="../../../resources/tutorials/testing/activity_test.html">Activity
Testing Tutorial</a>. Refer to the tutorial text for a full explanation
of this sample code.
Testing</a> tutorial. It tests the <a href="../Spinner/index.html">Spinner</a> example
application.
</p>
<p>
This application does not have an Android GUI.
The test application uses the
<a href="../../../reference/android/test/ActivityInstrumentationTestCase2.html"><code>ActivityInstrumentationTestCase2</code></a>
test case class,
which extends both <a href="../../../reference/android/app/Instrumentation">Android instrumentation</a> and the JUnit
<a href="../../../reference/junit/framework/TestCase.html"><code>TestCase</code></a>
class. The test runner is <a href="../../../reference/android/test/InstrumentationTestRunner.html"><code>InstrumentationTestRunner</code></a>.
</p>
<p>
The application shows how to set up a test application project,
how to create the <a href="AndroidManifest.html"><code>AndroidManifest.xml</code></a>
file for a test application, and how to set up a test case class for a test fixture. The
test case class, <a href="src/com/android/example/spinner/test/SpinnerActivityTest.html"><code>SpinnerActivityTest</code></a>,
contains tests that demonstrate the following Android test patterns:
</p>
<ul>
<li>
Test setup: The <code>setUp()</code> method re-initializes the state of the application under test
before each test is run.
</li>
<li>
Initial conditions: The <code>testPreconditions()</code> method demonstrates how to
test that the application under test is properly initialized prior to running the
test fixture.
</li>
<li>
UI interaction: The <code>testSpinnerUI()</code> method demonstrates how to send keystrokes
to the activity under test and then test the result.
</li>
<li>
Application control using instrumentation: The <code>testStateDestroy()</code> and <code>testStatePause()</code>
methods demonstrate how to use instrumentation to trigger stages in the lifecycle of the activity under test.
</li>
</ul>
<p>
The <a href="AndroidManifest.html">manifest</a> declares an <code>&lt;instrumentation&gt;</code> element
that links the test application with the application under test. Specifically, the
element's <code>android:name</code> attribute specifies <code>InstrumentationTestRunner</code> as the
instrumentation to use. The <code>android:targetPackage</code> attribute specifies
<code>com.android.example.spinner</code> as the name of the Android package that contains the
application under test.
</p>
<img alt="The initial user interface for the Spinner sample application" style="height:230px;"
src="../images/SpinnerTest1.png"/>
<img alt="The JUnit view in Eclipse with ADT, showing a successful test run of SpinnerTest" style="height:230px;"
src="../images/SpinnerTest2.png"/>

View File

@@ -26,15 +26,13 @@ import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
/**
/*
* Tests the example application Spinner. Uses the instrumentation test class
* {@link ActivityInstrumentationTestCase2} as its base class. The tests include
* <ol>
* <li>test initial conditions</li>
* <li>test the UI</li>
* <li>state management - preserving state after the app is shut down and restarted, preserving
* state after the app is hidden (paused) and re-displayed (resumed)</li>
* </ol>
* ActivityInstrumentationTestCase2 as its base class. The tests include
* - test initial conditions
* - test the UI
* - state management - preserving state after the app is shut down and restarted, preserving
* state after the app is hidden (paused) and re-displayed (resumed)
*
* Demonstrates the use of JUnit setUp() and assert() methods.
*/
@@ -91,7 +89,7 @@ public class SpinnerActivityTest extends ActivityInstrumentationTestCase2<Spinne
private SpinnerAdapter mPlanetData;
/**
/*
* Constructor for the test class. Required by Android test classes. The constructor
* must call the super constructor, providing the Android package name of the app under test
* and the Java class name of the activity in that application that handles the MAIN intent.
@@ -101,7 +99,7 @@ public class SpinnerActivityTest extends ActivityInstrumentationTestCase2<Spinne
super("com.android.example.spinner", SpinnerActivity.class);
}
/**
/*
* Sets up the test environment before each test.
* @see android.test.ActivityInstrumentationTestCase2#setUp()
*/
@@ -140,7 +138,7 @@ public class SpinnerActivityTest extends ActivityInstrumentationTestCase2<Spinne
}
/**
/*
* Tests the initial values of key objects in the app under test, to ensure the initial
* conditions make sense. If one of these is not initialized correctly, then subsequent
* tests are suspect and should be ignored.