Включите модульные и функциональные тесты

В этом разделе объясняется, как проводить тесты Торговой федерации и участвовать в них после внесения изменений в проект. Это включает в себя:

  • Где добавлять новые классы модульных тестов
  • Запуск модульных тестов в Eclipse и вне Eclipse IDE
  • Куда добавлять функциональные тесты
  • Выполнение функциональных тестов
  • Выполнение некоторых проверок перед отправкой TF локально

Добавить модульные тесты

В проекте Android Open Source Project (AOSP) добавьте класс модульных тестов в: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

ВАЖНО: Добавление новых классов модульных тестов в эти расположения приведет к их автоматическому запуску в presubmit без дополнительной настройки.

Выполнение модульных тестов

Все модульные тесты AOSP и функциональные тесты для Trade Federation находятся в проекте tools/tradefederation/core/tests .

В Eclipse для запуска отдельного модульного теста просто щёлкните по нему правой кнопкой мыши и выберите «Запустить как» > «JUnit» . Чтобы запустить все модульные тесты, запустите набор com.android.tradefed.UnitTests .

Вы также можете запустить модульный тест из командной строки в исходном дереве Tradefed после сборки, например: tools/tradefederation/core/javatests/run_tradefed_tests.sh

Модульные тесты можно выполнять автономно, но функциональные тесты следует выполнять с помощью самой Trade Federation; для этого требуется устройство Android. Все функциональные тесты должны соответствовать соглашению об именовании *FuncTest .

Проверьте результаты модульных тестов

При запуске run_tradefed_tests.sh модульные тесты проверяют все компоненты тестовой среды, включая некоторые ошибочные состояния. В консоль выводится подробный вывод, включая трассировку стека.

Окончательный обзор результатов покажет, произошел ли сбой или нет.

Пример итогового резюме в консоли:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

Все тесты проходят успешно, поэтому, если при локальном изменении возникнут какие-либо неполадки, пожалуйста, убедитесь, что тесты исправлены.

Добавить функциональные тесты

  • Если ваш функциональный тест использует устройство (любой API ITestDevice ), определение набора находится в com.android.tradefed.DeviceFuncTests . В противном случае определение набора находится в com.android.tradefed.FuncTests .

  • Если ваши тестовые методы целесообразно разместить в одном из существующих подклассов набора, добавьте его туда. В противном случае смело добавляйте новый класс в соответствующий набор.

  • В любом случае при добавлении его в набор ваш тест автоматически запускается в конвейере CI вместе с другими функциональными тестами.

Проведение функциональных тестов

Чтобы запустить функциональный тест из Eclipse:

  1. Убедитесь, что устройство подключено к хосту, а adb и, при необходимости, fastboot указаны в переменной PATH Eclipse. Проще всего это сделать, запустив Eclipse из оболочки с правильным значением PATH.
  2. Создайте приложение Java. Запустите конфигурацию через меню «Выполнить» > «Конфигурации запуска» .
  3. Установите проект на tradefed-tests и основной класс на com.android.tradefed.command.CommandRunner .
  4. Запустите m tradefed-all .
  5. На вкладке «Аргументы» укажите следующие аргументы командной строки: host --class <full path of test class to run>
  6. Нажмите кнопку Выполнить .

Для запуска функциональных тестов вне Eclipse.

  1. Построить Торговую Федерацию.
  2. Подключите Android-устройство к хосту.
  3. Запустите tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. При желании можно выбрать устройство, добавив --serial <serial no> как оно указано в выводе adb devices .

Выполнение предварительных тестов TF с учетом локальных изменений

Если вы хотите запустить его таким же образом, как и предварительную отправку TF, используйте это:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

Это запустит все предварительные тесты TF на вашем локально созданном TF, чтобы помочь вам убедиться, что ваши изменения не нарушают ни один тест.

Тесты TF pre-submit представляют собой надмножество модульных тестов, описанных выше, но они выполняются медленнее. Поэтому рекомендуется запускать модульные тесты во время разработки для более быстрой проверки, а pre-submit — перед загрузкой CL.