/* * Copyright (C) 2008 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 java.lang.reflect.Field; /** * This class provides functional testing of a single activity. The activity under test will * be created using the system infrastructure (by calling InstrumentationTestCase.launchActivity()) * and you will then be able to manipulate your Activity directly. Most of the work is handled * automatically here by {@link #setUp} and {@link #tearDown}. * * <p>If you prefer an isolated unit test, see {@link android.test.ActivityUnitTestCase}. * * @deprecated new tests should be written using * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for * configuring the Activity under test */ @Deprecated public abstract class ActivityInstrumentationTestCase<T extends Activity> extends ActivityTestCase { String mPackage; Class<T> mActivityClass; boolean mInitialTouchMode = 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 ActivityInstrumentationTestCase(String pkg, Class<T> activityClass) { this(pkg, activityClass, 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. * @param initialTouchMode true = in touch mode */ public ActivityInstrumentationTestCase(String pkg, Class<T> activityClass, boolean initialTouchMode) { mPackage = pkg; mActivityClass = activityClass; mInitialTouchMode = initialTouchMode; } @Override public T getActivity() { return (T) super.getActivity(); } @Override protected void setUp() throws Exception { super.setUp(); // set initial touch mode getInstrumentation().setInTouchMode(mInitialTouchMode); setActivity(launchActivity(mPackage, mActivityClass, null)); } @Override protected void tearDown() throws Exception { getActivity().finish(); setActivity(null); // Scrub out members - protects against memory leaks in the case where someone // creates a non-static inner class (thus referencing the test case) and gives it to // someone else to hold onto scrubClass(ActivityInstrumentationTestCase.class); super.tearDown(); } public void testActivityTestCaseSetUpProperly() throws Exception { assertNotNull("activity should be launched successfully", getActivity()); } }