Тесты JAR для хостов

Для полного покрытия кода вашего ПО необходимо реализовать хост-тесты архива Java (JAR). Следуйте инструкциям по созданию локальных модульных тестов. Создавайте небольшие модульные тесты, чтобы проверять только определенную функцию.

Пример

В следующем файле Blueprint приведен простой пример теста хоста JAR Hello World, который можно скопировать и адаптировать под свои нужды: 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. Контент модуля используется для разрешения ссылок на classpath во время компиляции и включается в полученный APK-файл.

    static_libs: [
        "junit",
    ],