Android Studio для платформы (ASfP) интегрирована с atest и тестовыми модулями Soong, поэтому вы можете запускать и отлаживать тесты платформы на хост-компьютере с Linux, подключенном устройстве или виртуальном устройстве Cuttlefish из IDE.
Требования
- Откройте проект ASfP, настроенный с помощью вашей контрольной точки AOSP и цели
lunch. - Для тестирования устройств подключите физическое устройство или запустите виртуальное устройство Cuttlefish с соответствующей сборкой.
Запуск и отладка тестов
Запускать тестирование платформы и сеансы отладки можно в нескольких местах в ASfP:
Android.bp. Откройте файлAndroid.bpи нажмите Выполнить на панели рядом с любым тестовым модулем (*_testили*_test_host):- Выполнить. Доступно для всех типов тестовых модулей Soong (
android_test,java_test_host,cc_test,rust_test,python_test,sh_testиandroid_robolectric_test). - Отладка. Доступно для модулей
android_test(подключенных с помощью отладчика Java с использованиемatest --wait-for-debugger) и тестовых модулей C++ или Rust (cc_test,cc_test_host,rust_testиrust_test_host, запущенных во встроенном отладчике LLDB ASfP).
- Выполнить. Доступно для всех типов тестовых модулей Soong (
- Значки на полях исходного файла. Нажмите Выполнить рядом с тестовым классом или методом в исходном коде, чтобы запустить или отладить этот тест.
@Test - Контекстное меню, вызываемое нажатием правой кнопки мыши. Нажмите правой кнопкой мыши на тестовый файл, класс, метод или модуль
Android.bpи выберите Выполнить или Отладка. - Встроенный агент (ИИ в Android Studio). В окне инструментов Агент встроенный агент может запускать цели
atest, чтобы проверять изменения после редактирования кода. - Встроенный терминал. Чтобы выполнять команды
atestнапрямую, откройте Вид > Окна инструментов > Терминал.
Умная настройка тестирования и отладка
Когда вы запускаете тест из желоба или контекстного меню, ASfP создает и настраивает конфигурацию запуска Soong Test, используя граф модуля Android.bp.
Отладка целей android_test Java и Kotlin
Нажмите на значок желоба рядом с модулем android_test в Android.bp или рядом с классом JUnit Java или Kotlin или методом @Test, а затем выберите Отладка "<Название теста>". Из желоба исходного файла ASfP выбирает ближайший модуль android_test, в srcs которого входит файл, и называет конфигурацию <module>, <module>:<SimpleClass> или <module>:<SimpleClass>#<method>.
ASfP запускает atest с --wait-for-debugger, считывает целевой атрибут package из AndroidManifest.xml модуля, ожидает завершения этого процесса на подключенном устройстве и подключает отладчик Java.

Отладка целевых объектов cc_test и rust_test в LLDB
Чтобы отладить тестовый модуль C++ или Rust (cc_test, cc_test_host, rust_test или rust_test_host), нажмите на значок Android.bp на полях и выберите Отладка <TestName>. ASfP запустит скомпилированный исполняемый файл теста во встроенном отладчике LLDB вместо того, чтобы запустить его через atest.
Как настроить конфигурацию тестового запуска Soong
Откройте Run > Edit Configurations (Запустить > Изменить конфигурации) и выберите конфигурацию Soong Test (Тест Soong), чтобы настроить сборку, развертывание и запуск тестов:
- Автозаполнение модуля и навигация с помощью клавиши
Android.bp. Поле Модуль автоматически заполняется на основе индексированных тестовых модулей Soong в вашем проекте. Нажмите Go to Android.bp рядом с полем, чтобы перейти к объявлению модуля в файлеAndroid.bp. - Выполнить на устройстве или хосте (включая
host_supported: true): ASfP оценивает правило модуля и его транзитивную цепочкуdefaults(host_supported,device_supported,enabled,target.android.enabledиtarget.host.enabled):- Тесты с двумя целями (
cc_testиrust_testсhost_supported: true). Доступны переключатели Устройство и Хост (по умолчанию выбран вариант Устройство). Устройство и Хост имеют собственные независимые шаблоны отладчика LLDB. Переключаясь между вариантами Устройство и Хост в разделе Запустить на, вы можете переключаться между конфигурацией удаленного устройстваlldb-serverи конфигурацией локального хоста, сохраняя настройки, заданные для каждого целевого объекта. - Тесты с одной целью. Если тест на C++ или Rust предназначен только для одной среды (например, только для устройства
cc_testили только для хостаcc_test_hostилиrust_test_host), ASfP выбирает поддерживаемую цель и отключает неподдерживаемый переключатель с подсказкой: "<module> (<ruleType>) doesn't build for the host or device.".
- Тесты с двумя целями (
- Задачи перед запуском (создание встроенного тестового модуля и развертывание с помощью atest).
Каждая конфигурация Soong Test по умолчанию включает две задачи Перед запуском:
- Создать модуль тестирования нативных приложений – создает
<module>-target(для устройства) или<module>-host(для хоста) перед запуском LLDB. - Развертывание с помощью atest. При отладке на устройстве запускает
atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi>, чтобы Tradefed передал зависимости тестирования и выполнил подготовительные действия перед тем, как LLDB запустит двоичный файл. Наведите указатель на чип Развернуть с помощью atest, чтобы посмотреть точную командуatest. Чтобы ускорить итерацию после того, как зависимости уже будут на устройстве, удалите Deploy with atest, чтобы ASfP отправлял только тестовый двоичный файл. Если вы выберете Выполнить на: хост, ASfP автоматически пропустит Развернуть с помощью atest.
- Создать модуль тестирования нативных приложений – создает
- Изменение параметров и отладчик (карточки параметров LLDB). Используйте Изменение параметров, чтобы добавить необязательные поля конфигурации:
- Аргументы программы (только для ОС, C++ и Rust):
дополнительные аргументы, передаваемые непосредственно в двоичный файл
cc_testилиrust_testпосле фильтра--gtest_filterилиlibtestпри отладке. - Аргументы atest (Тест). Дополнительные флаги, передаваемые в
atestпри запуске теста или при подготовке устройства с помощью Deploy with atest. - Отладчик (только для тестов C++ и Rust). Показывается, если Модуль является целью
cc_test*илиrust_test*. Включите карточки LLDB options (Параметры LLDB), например Stop on entry (Остановить при входе), Cache symbols across sessions (Кэшировать символы между сеансами), Load symbols on demand (Загружать символы по запросу) или With Rust visualizers (С визуализаторами Rust) для тестов Rust, нажмите Reset to defaults (Сбросить настройки по умолчанию), чтобы сбросить активный шаблон Device (Устройство) или Host (Хост), или добавьте Symbol directories (Каталоги символов), Init, Pre-run, Post-run, or Exit commands (Команды инициализации, перед запуском, после запуска или выхода) и Launch JSON (Запустить JSON) (DAP Settings (Настройки DAP)) в разделе Modify options > Debugger (Изменить параметры > Отладчик).
- Аргументы программы (только для ОС, C++ и Rust):
дополнительные аргументы, передаваемые непосредственно в двоичный файл

Просмотр результатов
Ход выполнения тестов, статус (пройден или не пройден), трассировки стека и журналы устройств отображаются в реальном времени в окне инструментов Выполнить или Отладка в ASfP.
Советы по тестированию
- Проводить целевые тесты. Тестируйте отдельные методы из редактора, не запуская весь набор тестов.
- Используйте снимки Cuttlefish. При тестировании устройств на виртуальных устройствах Cuttlefish используйте снимки, чтобы восстанавливать чистое состояние устройства между запусками.
- Проверьте журналы сборки Soong. Если тест не компилируется перед запуском, проверьте окно инструмента Soong на наличие диагностических данных компилятора.