Configuration de compilation simple

Chaque nouveau module de test doit disposer d'un fichier de configuration pour diriger le système de compilation avec les métadonnées du module, les dépendances au moment de la compilation et les instructions de packaging. Android utilise désormais le système de compilation Soong pour une configuration de test plus simple.

Soong utilise des fichiers Blueprint ou .bp, qui sont des descriptions déclaratives simples de modules à compiler, semblables à JSON. Ce format remplace le système basé sur Make utilisé dans les versions précédentes. Consultez les fichiers de référence Soong dans le tableau de bord d'intégration continue.

Pour effectuer des tests personnalisés ou utiliser la suite de tests de compatibilité (CTS) Android, suivez plutôt la configuration de test complexe.

Exemple

Les entrées ci-dessous proviennent de cet exemple de fichier de configuration de plan: /platform_testing/tests/example/instrumentation/Android.bp

Un instantané est inclus ici pour plus de commodité:

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["androidx.test.runner"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

Notez que la déclaration android_test au début indique qu'il s'agit d'un test. Inversement, inclure android_app indiquerait qu'il s'agit plutôt d'une compilation d'un package.

Paramètres

Les paramètres suivants fournissent des explications:

    name: "HelloWorldTests",

Le paramètre name est obligatoire lorsque le type de module android_test est spécifié. (au début du bloc). Elle attribue un nom à votre module. Le résultat L'APK portera le même nom avec le suffixe .apk, par exemple dans ce cas, L'APK de test résultant est nommé HelloWorldTests.apk. En outre, cela définit également un nom de cible de compilation pour votre module, afin que vous puissiez utiliser make [options] <HelloWorldTests> pour compiler votre module de test et toutes ses dépendances.

    static_libs: ["androidx.test.runner"],

Le paramètre static_libs indique au système de compilation d'intégrer le contenu des modules nommés dans l'APK résultant du module actuel. Cela signifie que chaque module nommé doit générer un fichier .jar, dont le contenu est utilisé pour résoudre les références au classpath au moment de la compilation, ainsi que incorporé dans l'APK résultant.

Le module androidx.test.runner est prédéfini pour AndroidX Test Runner. Bibliothèque, qui inclut l'exécuteur de test AndroidJUnitRunner. AndroidJUnitRunner est compatible avec le framework de test JUnit4 et a remplacé InstrumentationTestRunner sur Android 10. En savoir plus pour tester des applications Android, consultez Tester des applications sur Android.

Si vous créez un nouveau module d'instrumentation, vous devez toujours commencer par la bibliothèque androidx.test.runner en tant qu'exécuteur de test. L'arborescence source de la plate-forme inclut également d'autres frameworks de test utiles tels que ub-uiautomator, mockito-target, easymock, etc.

    certificate: "platform",

Le paramètre certificate demande au système de compilation de signer l'APK avec la même de certification en tant que plate-forme principale. Cela est nécessaire si votre test utilise une autorisation ou une API protégée par signature. Notez que cela convient au cas d'utilisation continue de plate-forme. tests, mais ne doivent pas être utilisées dans les modules de test CTS. Notez que cet exemple utilise ce paramètre de certificat uniquement à des fins d'illustration: le code de test de l'exemple n'a pas besoin que l'APK test soit signé avec un certificat spécial de plateforme.

Si vous écrivez pour votre composant une instrumentation qui existe en dehors de serveur système, c'est-à-dire qu'il est empaqueté plus ou moins comme un APK d'application standard, sauf qu'elle est intégrée à l'image système et peut être une application privilégiée, que votre instrumentation ciblera le package d'application (voir ci-dessous sur le fichier manifeste) de votre composant. Dans ce cas, le fichier de compilation de votre application peut avoir son propre paramètre certificate, et votre module d'instrumentation doit conserver le même paramètre. En effet, pour cibler votre instrumentation sur l'application en cours de test, votre APK de test et l'APK de l'application doivent être signés avec le même certificat.

Dans d'autres cas, ce paramètre n'est pas nécessaire: le système de compilation Google le signera simplement avec un certificat intégré par défaut, basé sur le build et est généralement appelé dev-keys.

    test_suites: ["device-tests"],

Le paramètre test_suites rend le test facile à détecter par l'équipe Test de la fédération. D'autres suites, comme CTS, peuvent être ajoutées ici. peut être partagé.

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

Paramètres facultatifs

Les paramètres facultatifs suivants fournissent une explication:

    test_config: "path/to/hello_world_test.xml"

Le paramètre test_config indique au système de compilation que votre cible de test nécessite une configuration spécifique. Par défaut, un AndroidTest.xml à côté de Android.bp est associées à la configuration.

    auto_gen_config: true

Le paramètre auto_gen_config indique si la configuration de test doit être créée ou non. automatiquement. Si AndroidTest.xml n'apparaît pas à côté de Android.bp, cette n'a pas besoin d'être explicitement défini sur "true".

    require_root: true

Le paramètre require_root indique au système de compilation d'ajouter RootTargetPreparer à la configuration de test générée automatiquement. Cela garantit que le test s'exécutera avec root autorisations.

    test_min_api_level: 29

Le paramètre test_min_api_level demande au système de compilation d'ajouter MinApiLevelModuleController à la configuration de test générée automatiquement. Lorsque Trade Federation exécute la configuration de test, le test est ignoré si la propriété de l'appareil ro.product.first_api_level est inférieure à test_min_api_level.