Android Studio for Platform (ASfP) s'intègre aux modules de test atest et Soong pour vous permettre d'exécuter et de déboguer des tests de plate-forme sur votre machine hôte Linux, votre appareil connecté ou votre appareil virtuel Cuttlefish depuis l'IDE.
Prérequis
- Ouvrez un projet ASfP configuré avec votre extraction AOSP et la cible
lunch. - Pour les tests d'appareil, connectez un appareil physique ou lancez un appareil virtuel Cuttlefish exécutant une version correspondante.
Exécuter et déboguer des tests
Vous pouvez lancer des tests de plate-forme et des sessions de débogage depuis plusieurs endroits dans ASfP :
Android.bpcibles de test : ouvrez un fichierAndroid.bpet cliquez sur Exécuter dans la gouttière à côté d'un module de test (*_testou*_test_host) :- Run : disponible pour tous les types de modules de test Soong (
android_test,java_test_host,cc_test,rust_test,python_test,sh_testetandroid_robolectric_test). - Déboguer : disponible pour les modules
android_test(associés au débogueur Java à l'aide deatest --wait-for-debugger) et les modules de test C++ ou Rust (cc_test,cc_test_host,rust_testetrust_test_host, lancés sous le débogueur LLDB intégré à ASfP).
- Run : disponible pour tous les types de modules de test Soong (
- Icônes de marge du fichier source : cliquez sur Exécuter à côté d'une classe de test ou d'une méthode
@Testdans votre code source pour exécuter ou déboguer ce test spécifique. - Menu contextuel (clic droit) : effectuez un clic droit sur un fichier de test, une classe, une méthode ou un module
Android.bp, puis sélectionnez Run (Exécuter) ou Debug (Déboguer). - Agent intégré (IA dans Android Studio) : dans la fenêtre d'outil Agent, l'agent intégré peut exécuter des cibles
atestpour vérifier les modifications après la modification du code. - Terminal intégré : ouvrez View > Tool Windows > Terminal (Affichage > Fenêtres d'outils > Terminal) pour exécuter directement les commandes
atest.
Configuration et débogage des tests intelligents
Lorsque vous lancez un test depuis la gouttière ou le menu contextuel, ASfP crée et configure une configuration d'exécution Soong Test à l'aide de votre graphique de module Android.bp.
Déboguer les cibles Java et Kotlin android_test
Cliquez sur l'icône en forme de gouttière à côté d'un module android_test dans Android.bp, ou à côté d'une classe JUnit Java ou Kotlin ou d'une méthode @Test, puis sélectionnez Debug '<TestName>' (Déboguer "<NomDuTest>"). À partir d'une gouttière de fichier source, ASfP sélectionne le module android_test le plus proche dont srcs inclut le fichier et nomme la configuration <module>, <module>:<SimpleClass> ou <module>:<SimpleClass>#<method>.
ASfP exécute atest avec --wait-for-debugger, lit l'attribut package cible à partir du AndroidManifest.xml du module, attend ce processus sur l'appareil connecté et attache le débogueur Java.

Déboguer les cibles cc_test et rust_test sous LLDB
Pour déboguer un module de test C++ ou Rust (cc_test, cc_test_host, rust_test ou rust_test_host), cliquez sur l'icône de gouttière Android.bp et sélectionnez Debug '<TestName>' (Déboguer "<NomDuTest>"). ASfP lance le binaire de test compilé sous son débogueur LLDB intégré au lieu de l'exécuter via atest.
Configurer la configuration d'exécution du test Soong
Ouvrez Exécuter > Modifier les configurations et sélectionnez une configuration Soong Test pour personnaliser la façon dont les tests sont créés, déployés et lancés :
- Saisie semi-automatique des modules et navigation
Android.bp: le champ Module se complète automatiquement à partir des modules de test Soong indexés dans votre projet. Cliquez sur Accéder à Android.bp à côté du champ pour accéder à la déclaration du module dansAndroid.bp. - Exécuter sur : Appareil ou hôte (y compris
host_supported: true) : ASfP évalue la règle du module et sa chaîne transitivedefaults(host_supported,device_supported,enabled,target.android.enabledettarget.host.enabled) :- Tests à double cible (
cc_testetrust_testavechost_supported: true) : les cases d'option Appareil et Hôte sont disponibles (Appareil est sélectionné par défaut). Appareil et Hôte conservent chacun leur propre modèle de débogueur LLDB indépendant. Si vous basculez entre Exécuter sur > Appareil et Hôte, vous passez de la configuration de l'appareil distantlldb-serverà celle du binaire hôte local, tout en conservant les personnalisations apportées à chaque cible. - Tests à cible unique : si un test C++ ou Rust n'est compilé que pour un seul environnement (par exemple, un
cc_testréservé aux appareils ou uncc_test_hostourust_test_hostréservé à l'hôte), ASfP sélectionne la cible compatible et désactive la case d'option non compatible avec une info-bulle explicative : "<module> (<ruleType>) doesn't build for the host or device.".
- Tests à double cible (
- Tâches avant le lancement (créer un module de test natif et déployer avec atest) :
Chaque configuration Soong Test inclut deux tâches Avant le lancement par défaut :
- Build Native Test Module (Compiler le module de test natif) : compile
<module>-target(pour Device) ou<module>-host(pour Host) avant de démarrer LLDB. - Déployer avec atest : lors du débogage sur Appareil, exécute
atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi>afin que Tradefed transmette les dépendances de test et exécute les préparateurs cibles avant que LLDB ne lance le binaire. Pointez sur le chip Déployer avec atest pour prévisualiser la commandeatestexacte. Pour une itération plus rapide une fois que les dépendances sont déjà sur l'appareil, supprimez Déployer avec atest afin qu'ASfP n'envoie que le binaire de test directement. Lorsque vous sélectionnez Exécuter sur : hôte, ASfP ignore automatiquement Déployer avec atest.
- Build Native Test Module (Compiler le module de test natif) : compile
- Modifier les options et le débogueur (cartes d'options LLDB) : utilisez Modifier les options pour ajouter des champs de configuration facultatifs :
- Arguments du programme (système d'exploitation, tests C++ et Rust uniquement) : arguments supplémentaires transmis directement au binaire
cc_testourust_testaprès le filtre--gtest_filteroulibtestlors du débogage. - Arguments atest (Test) : indicateurs supplémentaires transmis à
atestlors de l'exécution du test ou lors de la préparation d'un appareil avec Déployer avec atest. - Débogueur (tests C++ et Rust uniquement) : s'affiche lorsque Module est une cible
cc_test*ourust_test*. Activez les fiches Options LLDB (comme Arrêter à l'entrée, Mettre en cache les symboles entre les sessions, Charger les symboles à la demande ou Avec les visualisateurs Rust pour les tests Rust), cliquez sur Rétablir les valeurs par défaut pour réinitialiser le modèle Appareil ou Hôte actif, ou ajoutez Répertoires de symboles, Commandes Init, Pré-exécution, Post-exécution ou Quitter et Lancer JSON (Paramètres DAP) depuis Modifier les options > Débogueur.
- Arguments du programme (système d'exploitation, tests C++ et Rust uniquement) : arguments supplémentaires transmis directement au binaire

Afficher les résultats des tests
La progression de l'exécution des tests, l'état de réussite ou d'échec, les traces de la pile et les journaux de l'appareil s'affichent en temps réel dans la fenêtre d'un outil Exécuter ou Déboguer d'ASfP.
Conseils pour les tests
- Exécuter des tests ciblés : testez des méthodes individuelles à partir de la marge de l'éditeur sans exécuter une suite de tests complète.
- Utiliser les instantanés Cuttlefish : lorsque vous exécutez des tests d'appareil sur des appareils virtuels Cuttlefish, utilisez des instantanés pour restaurer un état propre de l'appareil entre les exécutions.
- Inspecter les journaux de compilation Soong : si un test ne parvient pas à être compilé avant l'exécution, consultez la fenêtre d'outil Soong pour obtenir des diagnostics du compilateur.