72d5de71f2
InstrumentationTestCase and its descendants should be the package manager package name (not the java package name, and not the test package) of the package holding the Activity under test. Added similar notations to the ApiDemos call sites. JAVADOC ONLY - should be safe change for cupcake sdk. Original author: stadler Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147169
88 lines
3.0 KiB
Java
88 lines
3.0 KiB
Java
/*
|
|
* Copyright (C) 2007 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.test;
|
|
|
|
import android.app.Activity;
|
|
import android.view.IWindowManager;
|
|
import android.os.ServiceManager;
|
|
|
|
/**
|
|
* If you would like to test a single activity with an
|
|
* {@link android.test.InstrumentationTestCase}, this provides some of the boiler plate to
|
|
* launch and finish the activity in {@link #setUp} and {@link #tearDown}.
|
|
*
|
|
* This launches the activity only once for the entire class instead of doing it
|
|
* in every setup / teardown call.
|
|
*/
|
|
public abstract class SingleLaunchActivityTestCase<T extends Activity>
|
|
extends InstrumentationTestCase {
|
|
|
|
String mPackage;
|
|
Class<T> mActivityClass;
|
|
private static int sTestCaseCounter = 0;
|
|
private static boolean sActivityLaunchedFlag = false;
|
|
|
|
/**
|
|
* <b>NOTE:</b> The parameter <i>pkg</i> must refer to the package identifier of the
|
|
* package hosting the activity to be launched, which is specified in the AndroidManifest.xml
|
|
* file. This is not necessarily the same as the java package name.
|
|
*
|
|
* @param pkg The package hosting the activity to be launched.
|
|
* @param activityClass The activity to test.
|
|
*/
|
|
public SingleLaunchActivityTestCase(String pkg, Class<T> activityClass) {
|
|
mPackage = pkg;
|
|
mActivityClass = activityClass;
|
|
sTestCaseCounter ++;
|
|
}
|
|
|
|
/**
|
|
* The activity that will be set up for use in each test method.
|
|
*/
|
|
private static Activity sActivity;
|
|
|
|
public T getActivity() {
|
|
return (T) sActivity;
|
|
}
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
// If it is the first test case, launch the activity.
|
|
if (!sActivityLaunchedFlag) {
|
|
// by default, not in touch mode
|
|
getInstrumentation().setInTouchMode(false);
|
|
sActivity = launchActivity(mPackage, mActivityClass, null);
|
|
sActivityLaunchedFlag = true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception {
|
|
// If it is the last test case, call finish on the activity.
|
|
sTestCaseCounter --;
|
|
if (sTestCaseCounter == 1) {
|
|
sActivity.finish();
|
|
}
|
|
super.tearDown();
|
|
}
|
|
|
|
public void testActivityTestCaseSetUpProperly() throws Exception {
|
|
assertNotNull("activity should be launched successfully", sActivity);
|
|
}
|
|
}
|