Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Контрольно-измерительные приборы

Сначала прочитайте Проверьте свое приложение на developer.android.com. Обратите внимание, что существуют некоторые различия в том, как инструментальные тесты используются при тестировании платформы.

Таким образом, инструментальное тестирование предоставляет специальную среду выполнения теста, которая запускается с помощью команды am instrument , где целевой процесс приложения перезапускается и инициализируется с базовым контекстом приложения, а поток инструментария запускается внутри виртуальной машины процесса приложения. Ваш тестовый код начинает выполнение в этом потоке инструментов и получает экземпляр Instrumentation который предоставляет доступ к контексту приложения и API для управления тестируемым процессом приложения.

Ключевые идеи

  • инструментарий должен быть объявлен в пакете приложения с <instrumentation> вложенным в <manifest> манифеста пакета приложения.
  • Манифест пакета приложения технически может содержать несколько тегов <instrumentation> , хотя он обычно не используется таким образом.
  • каждый <instrumentation> должен содержать:
    • атрибут android:name : это должно быть имя подкласса Instrumentation , включенного в тестовое приложение, которое обычно используется для запуска тестов, например: android.support.test.runner.AndroidJUnitRunner
    • атрибут android:targetPackage должен быть определен. Его значение должно быть установлено для тестируемого пакета приложения.

Краткое изложение шагов

  1. Ниже приведены общие пункты назначения для герметичных испытаний с использованием базовых сервисов:

     frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
     

    Если вы добавляете новый инструментальный модуль для своего компонента, см.

  2. Следуя действующему соглашению, если вы добавляете тесты в одно из расположений выше. Если вы настраиваете новый тестовый модуль, пожалуйста, следуйте настройке AndroidManifest.xml и Android.mk в одном из расположений выше

  3. См. Frameworks / base / core / tests / coretests / для примера. Обратите внимание, что эти строки устанавливают дополнительные приложения:

     <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
     
  4. Не забудьте пометить свой тест как @SmallTest , @MediumTest или @LargeTest

  5. Создайте тестовый модуль с помощью make, например:

     make FrameworksCoreTests -j
     
  6. Запустите тесты:

     make tradefed-all -j
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
     
  7. Если вы не используете Tradefed, вручную установите и запустите тесты:

    1. Установите сгенерированный apk:
     adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
     

    Совет: вы используете adb shell pm list instrumentation чтобы найти инструментарий внутри только что установленного apk

    1. Запустите тесты с различными параметрами:

      1. все тесты в апк

         adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
         
      2. все тесты под конкретным пакетом Java

         adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
         
      3. все тесты под определенный класс

         adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
         
      4. конкретный метод испытаний

         adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
         

Ваш тест может сделать явное утверждение при пропуске или сбое с помощью API JUnit ; Кроме того, любые неперехваченные исключения также вызовут функциональный сбой.

Чтобы выдать метрики производительности, ваш тестовый код может вызвать Instrumentation#sendStatus для отправки списка пар ключ-значение. Важно отметить, что:

  1. метрики могут быть целочисленными или с плавающей точкой
  2. любые нечисловые значения будут отброшены
  3. ваш тестовый apk может быть функциональным или метрическим, но в настоящее время не поддерживаются оба варианта.