| /* |
| * 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); |
| } |
| } |