Сначала прочтите статью «Протестируйте свое приложение на developer.android.com». Обратите внимание, что существуют некоторые различия в использовании инструментальных тестов при тестировании платформы.
 Подводя итог, можно сказать, что инструментальный тест предоставляет специальную среду выполнения теста, запускаемую командой am instrument , в которой целевой процесс приложения перезапускается и инициализируется с базовым контекстом приложения, а внутри виртуальной машины процесса приложения запускается поток инструментирования. Ваш тестовый код начинает выполняться в этом потоке инструментирования и получает экземпляр Instrumentation , который обеспечивает доступ к контексту приложения и API для управления тестируемым процессом приложения.
Ключевые концепции
-  Инструментарий должен быть объявлен в пакете приложения с тегом <instrumentation>, вложенным под тегом<manifest>манифеста пакета приложения.
-  Манифест пакета приложения технически может содержать несколько тегов <instrumentation>, хотя обычно он не используется таким образом.
-  каждый <instrumentation>должен содержать:-  Атрибут android:name: это должно быть имя подклассаInstrumentation, включенного в тестовое приложение, которое обычно является используемым исполнителем тестов, например:android.support.test.runner.AndroidJUnitRunner
-  Необходимо определить атрибут android:targetPackage. Его значение должно соответствовать пакету тестируемого приложения.
 
-  Атрибут 
Краткое изложение шагов
- Ниже приведены общие направления для герметичных тестов на соответствие фреймворковым службам: - frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests- Если вы добавляете совершенно новый модуль измерительных приборов для своего компонента, см. 
- Следуйте существующим правилам, если вы добавляете тесты в одно из указанных выше мест. Если вы настраиваете новый тестовый модуль, следуйте инструкциям по настройке - AndroidManifest.xmlи- Android.mkв одном из указанных выше мест.
- См. пример в frameworks/base/core/tests/coretests/ . Обратите внимание, что эти строки устанавливают дополнительные приложения: - <option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
- Не забудьте отметить свой тест как - @SmallTest,- @MediumTestили- @LargeTest
- Создайте тестовый модуль с m, например: - m FrameworksCoreTests
- Запустите тесты: - Самое простое решение — использовать Atest следующим образом: - atest FrameworksCoreTests
- Или для более сложных тестов используйте тест Harness от Trade Federation : 
 - m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
- Если вы не используете Tradefed, установите и запустите тесты вручную: - Установите сгенерированный APK:
 - adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk- Запустите тесты с различными вариантами: - все тесты в apk - adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
- все тесты в рамках определенного пакета Java - adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
- все тесты в рамках определенного класса - adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
- конкретный метод испытания - adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
 
 
 Ваш тест может явно утверждать о прохождении или провале с использованием API JUnit ; кроме того, любые неперехваченные исключения также приведут к функциональному сбою.
 Для получения показателей производительности ваш тестовый код может вызвать Instrumentation#sendStatus для отправки списка пар «ключ-значение». Важно отметить следующее:
- Метрики могут быть целыми или с плавающей точкой
- любые нечисловые значения будут отброшены
- Ваш тестовый APK-файл может быть либо функциональным, либо метрическим тестом, однако смешивание этих тестов в настоящее время не поддерживается.
