Для обеспечения полного покрытия кода вашего программного обеспечения необходимо реализовать тесты на хосте Java-архива (JAR). Следуйте инструкциям по созданию локальных модульных тестов . Пишите небольшие модульные тесты для проверки конкретной функции и ничего больше.
Пример
В следующем файле Blueprint представлен простой пример теста "Hello World" в формате JAR, который можно скопировать и адаптировать под свои нужды: platform_testing/tests/example/jarhosttest/Android.bp
Это соответствует фактическому тестовому коду, найденному по адресу: platform_testing/tests/example/jarhosttest/test/android/test/example/helloworld/HelloWorldTest.java
Для удобства здесь приведён снимок файла Blueprint:
java_test_host {
name: "HelloWorldHostTest",
test_suites: ["general-tests"],
srcs: ["test/**/*.java"],
static_libs: [
"junit",
"mockito",
],
}
Объявление java_test_host в начале указывает на то, что это тест хоста JAR-файла. Пример его использования можно найти в файле: `frameworks/base/tools/powermodel/Android.bp`
Настройки
Ниже приведены пояснения к следующим настройкам:
Параметр
nameнеобходим, если указан тип модуляjava_test_host(в начале блока). Этот параметр задает имя вашему модулю, и результирующий JAR-файл будет иметь то же имя и суффикс.jar. В приведенном ниже примере результирующий тестовый JAR-файл называетсяHelloWorldHostTest.jar. Кроме того, этот параметр также определяет имя цели сборки для вашего модуля, так что вы можете использоватьmake [options] <HelloWorldHostTest>для сборки вашего тестового модуля и всех его зависимостей.name: "HelloWorldHostTest",Параметр
test_suitesпозволяет легко обнаружить тесты с помощью тестовой среды Trade Federation. Сюда можно добавить и другие наборы тестов, например, CTS, чтобы можно было совместно использовать тесты, хранящиеся в JAR-файле.test_suites: ["general-tests"],Параметр
static_libsуказывает системе сборки включать содержимое указанных модулей в результирующий APK текущего модуля. Это означает, что каждый указанный модуль должен создавать файл.jar. Содержимое модуля используется для разрешения ссылок на пути к классам во время компиляции и включается в результирующий APK.static_libs: [ "junit", ],