Utilisation de l'activité de non-production pour les tests avec Android Studio

Avant que Android Studio, le test et l'application Android impliquiez un projet Android distinct qui serait ignoré lors de la construction pour la production. Avec Android Studio, le code de production et le code de test existent dans le même projet, qui ne comporte qu'un seul ensemble (manifeste, actif, ressources).

Dans ce cas, comment définiriez-vous une activité personnalisée à utiliser uniquement pour les tests? Pour Android pour permettre à toute Activité d'être démarrée, elle doit être déclarée dans le manifeste. Existe-t-il un moyen de contourner cette restriction? Comment Android peut-il être chargé de charger des activités test-only sans polluer les facettes de production du projet?

  • Espresso: return boolean si la vue existe
  • Activité de départ pour les tests
  • Android Robotium NoClassDefFoundError
  • Comment réparer une erreur "Impossible de détecter la version Mac OS X à partir de la sortie sw_vers: '10 .12 '" de Appium
  • Comment autoriser les testeurs alpha / beta de l'application Android à télécharger l'application gratuitement?
  • Comment utiliser Espresso Idling Resource
  • Comment tester un service Intent en utilisant un ServiceTestCase?
  • Comment forcez-vous un changement d'orientation dans un test d'instrumentation Android?
  • One Solution collect form web for “Utilisation de l'activité de non-production pour les tests avec Android Studio”

    Voici comment le faire.

    1. Définissez un nouveau type de construction dans votre build.gradle :

    buildTypes { extraActivity { signingConfig signingConfigs.debug debuggable true } } 

    Dans le mien, je lui ai donné la configuration de la signature de débogage et l'ai configuré pour débarquer; Configurez comme bon vous semble.

    2. Cliquez sur le bouton Sync Project with Gradle Files .

    3. Choisissez votre nouveau type de construction à partir de la fenêtre Variantes de construction .

    4. Configurez les répertoires source pour votre nouveau type de construction

    Dans mon exemple, mes fichiers vont dans le package Java com.example.myapplication3.app .

     src/extraActivity/java/com/example/myapplication3/app src/extraActivity/res 

    5. Créez votre nouvelle activité dans les dossiers pour votre type de construction

    Soyez conscient que si vous cliquez avec le bouton droit de la souris sur le paquet et choisissez Nouveau > Activité , il y a un bug et ne mettra pas les fichiers de l'activité dans le dossier de votre nouveau type de construction, mais il les mettra dans src / main. Si vous faites cela, vous devrez déplacer les déposants sur le dossier approprié à la main.

    6. Créez un fichier AndroidManifest.xml dans src / extraActivity

    Ce manifeste est fusionné avec la version dans src / main , alors n'ajoutez que les bits que vous devez superposer sur l'original:

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication3.app" > <application> <activity android:name=".ExtraActivity" android:label="Extra Activity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

    Dans mon exemple, j'ai configuré ma nouvelle activité comme une activité de lancement afin que je puisse la voir dans l'écran Applications et confirmer qu'elle fonctionne; Vous pourriez ne pas avoir besoin de le faire. Puisque je donne mon application deux icônes de lance, je dois également suivre les conseils des activités de Two launcher et l'ajouter à l' intent-filter de votre principal actvity (dans src / main / AndroidManifest.xml ); Vous n'aurez peut-être pas besoin de le faire non plus:

     <category android:name="android.intent.category.DEFAULT"/> 

    Voici une capture d'écran de ma mise en page du projet après tout cela est fait:

    Tirage d'écran montrant la structure du projet

    Cela fonctionne pour moi. Je peux basculer les types de compilation d'avant en arrière avec la fenêtre Variantes de construction (vous pouvez voir l'onglet sur le côté gauche de la capture d'écran ci-dessus); La construction de la variante de débogage ne me donne qu'une seule activité, et la construction de la variante extraActivity me donne deux.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.