Android
Интерактивный пользовательский интерфейс с UIAutomator
Поиск…
Синтаксис
- Инструментарий getInstrumentation ()
- UIDevice UiDevice.getInstance (контрольно-измерительная аппаратура)
- boolean UIDevice.pressHome ()
- boolean UIDevice.pressBack ()
- boolean UIDevice.pressRecentApps ()
- void UIDevice.wakeUp ()
- boolean UIDevice.swipe (int startX, int startY, int endX, int endY, int steps)
- boolean UIDevice.drag (int startX, int startY, int endX, int endY, int steps)
- UIObject2 UIDevice.findObject (By.desc (String contentDesc))
- boolean UIObject2.click ()
замечания
UIAutomator особенно хороши для тестирования пользовательских историй. У вас возникают проблемы, если элементы представления не имеют ни уникального идентификатора ресурса, ни контента-desc . В большинстве случаев есть способ закончить тест в любом случае, что занимает много времени. Если вы можете влиять на код своего приложения, UIAutomator может быть вашим инструментом тестирования.
Подготовьте свой проект и напишите первый тест UIAutomator
Добавьте необходимые библиотеки в раздел зависимостей build.gradle вашего Android:
android {
...
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
...
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
androidTestCompile 'com.android.support:support-annotations:23.4.0'
}
⚠ Обратите внимание, что, конечно, версии могут отличаться в среднем времени.
После этой синхронизации с изменениями.
Затем добавьте новый класс Java внутри папки androidTest:
public class InterAppTest extends InstrumentationTestCase {
private UiDevice device;
@Override
public void setUp() throws Exception {
device = UiDevice.getInstance(getInstrumentation());
}
public void testPressHome() throws Exception {
device.pressHome();
}
}
Сделав правый щелчок на вкладке класса и «Запустить« InterAppTest », выполняется этот тест.
Написание более сложных тестов с использованием UIAutomatorViewer
Чтобы разрешить писать более сложные UI-тесты, необходим UIAutomatorViewer . Инструмент, расположенный в / tools /, делает полноэкранный снимок экрана, включая макеты отображаемых в настоящее время видов. См. Последующую картинку, чтобы получить представление о том, что показано:
Для тестов UI мы ищем идентификатор ресурса , контент-desc или что-то еще, чтобы идентифицировать представление и использовать его в наших тестах.
Uiautomatorviewer выполняется через терминал.
Если мы сейчас, например, хотим нажать кнопку «Приложения», а затем открыть какое-то приложение и проведите по экрану, вот как выглядит метод тестирования:
public void testOpenMyApp() throws Exception {
// wake up your device
device.wakeUp();
// switch to launcher (hide the previous application, if some is opened)
device.pressHome();
// enter applications menu (timeout=200ms)
device.wait(Until.hasObject(By.desc(("Apps"))), 200);
UiObject2 appsButton = device.findObject(By.desc(("Apps")));
assertNotNull(appsButton);
appsButton.click();
// enter some application (timeout=200ms)
device.wait(Until.hasObject(By.desc(("MyApplication"))), 200);
UiObject2 someAppIcon = device.findObject(By.desc(("MyApplication")));
assertNotNull(someAppIcon);
someAppIcon.click();
// do a swipe (steps=20 is 0.1 sec.)
device.swipe(200, 1200, 1300, 1200, 20);
assertTrue(isSomeConditionTrue)
}
Создание тестового набора тестов UIAutomator
Сведение тестов UIAutomator вместе с набором тестов - это быстро:
package de.androidtest.myapplication;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({InterAppTest1.class, InterAppTest2.class})
public class AppTestSuite {}
Выполните аналогичную процедуру, щелкнув правой кнопкой мыши и запустите пакет.