Joe Malin | 6878d8c | 2010-06-05 14:03:42 -0700 | [diff] [blame] | 1 | <p> |
| 2 | This sample is the test application for the <a href="../Alarm/index.html">Alarm</a> |
| 3 | sample application. It tests the application's <code>AlarmService</code> service. |
| 4 | </p> |
| 5 | <p> |
| 6 | The test application uses the |
| 7 | <a href="../../../reference/android/test/ServiceTestCase.html"> |
| 8 | <code>ServiceTestCase</code></a> test case class, |
| 9 | which extends the JUnit <a href="../../../reference/junit/framework/TestCase.html"> |
| 10 | <code>TestCase</code></a> class. The test runner is |
| 11 | <a href="../../../reference/android/test/InstrumentationTestRunner.html"> |
| 12 | <code>InstrumentationTestRunner</code></a>. |
| 13 | </p> |
| 14 | <p> |
| 15 | The application shows how to set up a test application project, |
| 16 | how to create the <a href="AndroidManifest.html"><code>AndroidManifest.xml</code></a> |
| 17 | file for a test application, and how to set up a test case class for a service. The |
| 18 | test case class, <a href="src/com/android/example/newalarm/ServiceAlarmTest.html"> |
| 19 | <code>AlarmServiceTest</code></a>, contains tests that demonstrate the following |
| 20 | Android test patterns: |
| 21 | </p> |
| 22 | <ul> |
| 23 | <li> |
| 24 | Test setup: The <code>setUp()</code> method re-initializes the state of the |
| 25 | service under test before each test is run. |
| 26 | </li> |
| 27 | <li> |
| 28 | Service start: The <code>Service.testServiceCreate()</code> test confirms that the |
| 29 | service starts correctly and initializes the variables it needs to provide its |
| 30 | services. |
| 31 | </li> |
| 32 | </ul> |
| 33 | <p> |
| 34 | The <a href="AndroidManifest.html">manifest</a> declares an <code><instrumentation></code> |
| 35 | element that links the test application with the application under test. Specifically, the |
| 36 | element's <code>android:name</code> attribute specifies <code>InstrumentationTestRunner</code> |
| 37 | as the instrumentation to use. The <code>android:targetPackage</code> attribute specifies |
| 38 | <code>com.android.example.newalarm</code> as the name of the Android package that contains the |
| 39 | service under test. |
| 40 | </p> |
| 41 | <p class="note"> |
| 42 | <strong>Note:</strong> <code>AlarmServiceTest.java</code> uses the Java package name |
| 43 | <code>com.example.android.newalarm</code>, which is the same package used by service under |
| 44 | test, <code>AlarmService.java</code>. This allows the test class to access members in the |
| 45 | service under test that are defined with package visibility. To prevent conflicts, though, |
| 46 | the generated java file <code>R.java</code> for <code>AlarmServiceTest</code> uses the |
| 47 | Java package name <code>com.example.android.newalarm.test</code>. For the same reason, the |
| 48 | Android package name for the test application (specified in the manifest file), is |
| 49 | <code>com.example.android.newalarm.test</code>. |
| 50 | </p> |