/* * Copyright (C) 2013 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 com.android.uiautomator.testrunner; import android.app.Instrumentation; import android.os.Bundle; import android.os.SystemClock; import android.test.InstrumentationTestCase; import com.android.uiautomator.core.InstrumentationUiAutomatorBridge; import com.android.uiautomator.core.UiDevice; /** * UI Automator test case that is executed on the device. */ public class UiAutomatorTestCase extends InstrumentationTestCase { private Bundle mParams; private IAutomationSupport mAutomationSupport; /** * Get current instance of {@link UiDevice}. Works similar to calling the static * {@link UiDevice#getInstance()} from anywhere in the test classes. * @since API Level 16 */ public UiDevice getUiDevice() { return UiDevice.getInstance(); } /** * Get command line parameters. On the command line when passing <code>-e key value</code> * pairs, the {@link Bundle} will have the key value pairs conveniently available to the * tests. * @since API Level 16 */ public Bundle getParams() { return mParams; } void setAutomationSupport(IAutomationSupport automationSupport) { mAutomationSupport = automationSupport; } /** * Provides support for running tests to report interim status * * @return IAutomationSupport * @since API Level 16 * @deprecated Use {@link Instrumentation#sendStatus(int, Bundle)} instead */ public IAutomationSupport getAutomationSupport() { if (mAutomationSupport == null) { mAutomationSupport = new InstrumentationAutomationSupport(getInstrumentation()); } return mAutomationSupport; } /** * Initializes this test case. * * @param params Instrumentation arguments. */ void initialize(Bundle params) { mParams = params; // check if this is a monkey test mode String monkeyVal = mParams.getString("monkey"); if (monkeyVal != null) { // only if the monkey key is specified, we alter the state of monkey // else we should leave things as they are. getInstrumentation().getUiAutomation().setRunAsMonkey(Boolean.valueOf(monkeyVal)); } UiDevice.getInstance().initialize(new InstrumentationUiAutomatorBridge( getInstrumentation().getContext(), getInstrumentation().getUiAutomation())); } /** * Calls {@link SystemClock#sleep(long)} to sleep * @param ms is in milliseconds. * @since API Level 16 */ public void sleep(long ms) { SystemClock.sleep(ms); } }