# Как я могу запускать тесты Android без Appium?

Для тестирования Android-приложений можно обойтись без Appium, используя **инструменты и фреймворки, которые работают напрямую с платформой**. Основные подходы:

***

#### 1. **Espresso (официальный Android инструмент)**

* **Что это:** UI-тесты для нативных Android-приложений на Java/Kotlin.
* **Как работает:** тесты запускаются в том же процессе, что и приложение, напрямую взаимодействуя с элементами UI.
* **Особенности:**
  * Высокая скорость и стабильность.
  * Возможность тестировать RecyclerView, анимации, пользовательские виджеты.
  * Интеграция с AndroidJUnitRunner.
* **Пример команды запуска:**

```bash
./gradlew connectedAndroidTest
```

* **Применение:** unit/UI-тесты, тестирование действий пользователя (клики, ввод, свайпы).

***

#### 2. **UI Automator**

* **Что это:** фреймворк для взаимодействия с **всей системой Android**, включая другие приложения.
* **Особенности:**
  * Можно тестировать диалоги, уведомления, настройки, системные окна.
  * Работает на устройстве без запуска приложения в том же процессе.
  * Поддержка поиска элементов по text, resource-id, class name.
* **Пример запуска:**

```bash
./gradlew connectedAndroidTest
```

(тесты пишутся через UIAutomator APIs)

***

#### 3. **Robolectric**

* **Что это:** unit-тесты, которые **симулируют Android среду на JVM**, без эмулятора или устройства.
* **Особенности:**
  * Быстрые тесты на локальной машине.
  * Можно тестировать Activity, Service, BroadcastReceiver без эмулятора.
  * Не подходит для реального UI-тестирования, больше для логики и жизненного цикла Activity.

***

#### 4. **Detox (для React Native)**

* **Что это:** end-to-end тесты для React Native приложений.
* **Особенности:** синхронизирует тесты с UI и асинхронными операциями, не требует Appium.

***

#### 5. **Monkey / MonkeyRunner**

* **Monkey:** генерация случайных событий (клики, свайпы) для стресс-тестирования приложения.
* **MonkeyRunner:** автоматизация тестов через скрипты на Python, работающие напрямую с устройством.
* **Особенности:** низкоуровневое управление устройством, не всегда стабильно для детальных тестов UI.

***

#### 6. **ADB скрипты**

* Можно использовать **adb shell input** для автоматизации действий:

```bash
adb shell input tap x y
adb shell input text "Hello"
adb shell am start -n com.example.app/.MainActivity
```

* Подходит для простых сценариев, smoke-тестов или интеграции с CI.

***

#### 7. **Комбинации**

* **Espresso + UIAutomator:** позволяет тестировать UI внутри приложения и системные элементы.
* **Robolectric для юнит-тестов логики + Espresso для UI-тестов:** покрывает все слои приложения без Appium.

***

**Итог:** Appium нужен, если хочется **кроссплатформенного решения с одним кодом для iOS и Android**. Если тестируем только Android, более стабильные и быстрые варианты — **Espresso**, **UI Automator**, **Robolectric**, иногда с ADB или Monkey для низкоуровневых сценариев.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/mobile/kak-ya-mogu-zapuskat-testy-android-bez-appium.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
