Je viens de télécharger Android Studio basé sur Intellij Idea.
Comment créer des tests?
Je remarque qu’il existe une option pour créer un module de test, mais cela ne semble rien faire, ne crée qu’un nouveau projet avec src
J’ai aussi essayé d’appuyer sur la touche de raccourci CTRL + AlT + T qui permet de créer des tests unitaires sur une classe existante mais elle semble vouloir la placer dans le projet en cours. Bien sûr, cela n’aide pas avec TDD
Quelqu’un at-il une expérience ici?
Cette réponse s’adresse aux personnes qui commencent tout juste à tester Android. Je vais fournir deux exemples simples pour vous aider à voir comment fonctionnent les tests. Si vous suivez les 10 prochaines minutes, vous serez prêt à append vos tests à votre propre application. Je pense que vous serez surpris à quel point c’est facile. J’étais certainement.
Vous ferez deux types de tests différents.
Context
simulé est un exemple.) Créez un nouveau projet et vous verrez les dossiers par défaut suivants.
Tout est déjà là et vous attend pour créer vos tests. Tout est prêt!
Ouvrez le fichier ExampleUnitTest
indiqué dans l’image ci-dessus. Ça devrait ressembler a quelque chose comme ca:
public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); } }
Appuyez sur la double flèche verte pour exécuter tous les tests ou sur la seule flèche verte pour en exécuter un seul. (Dans ce cas, il n’y a qu’un seul test, ils font tous les deux la même chose.)
Il devrait passer (tant que 2 + 2
est toujours 4
quand vous lisez cette réponse). Félicitations, vous venez de faire votre premier test!
Faire votre propre test
Écrivons notre propre test. Ajoutez d’abord cette classe à votre projet d’application principal afin que nous ayons quelque chose à tester:
public class MyClass { public int add(int a, int b) { return a + b; } }
Modifiez maintenant la méthode addition_isCorrect()
dans la classe de test pour qu’elle ressemble au code suivant (ou ajoutez simplement une autre méthode avec un nom différent):
public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { MyClass myClass = new MyClass(); int result = myClass.add(2, 2); int expected = 4; assertEquals(expected, result); } }
Exécuter à nouveau et vous devriez le voir passer. Félicitations, vous venez de créer votre propre premier test! (Eh bien, je suppose que techniquement c’était le mien, mais, hé, assez proche. Ce qui est à moi est à toi.)
Ouvrez le fichier ExampleInstrumentedTest
. Ça devrait ressembler a quelque chose comme ca:
@RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); assertEquals("com.example.myapp", appContext.getPackageName()); } }
Appuyez à nouveau sur l’un de ces boutons verts.
Tant que vous avez un périphérique réel connecté ou l’émulateur configuré, il devrait l’avoir démarré et exécuter votre application. Félicitations, vous venez de lancer votre premier test instrumenté!
Faire votre propre test
Les tests instrumentés utilisent Espresso pour exécuter les tests. C’est un peu comme votre petit utilisateur de robot que vous pouvez tester votre application. Vous pouvez lui demander de faire quelque chose comme appuyer sur un bouton ou lire les propriétés d’un TextView.
Vous pouvez écrire les instructions pour savoir comment faire le test à la main, mais comme nous commençons tout juste, utilisons la fonction d’enregistrement automatique . C’est super simple
Commencez par append un bouton à votre interface utilisateur afin de pouvoir travailler avec. J’ai fait ça:
Appuyez ensuite sur Exécuter> Enregistrer le test expresso dans le menu.
Après le démarrage, cliquez sur le bouton dans l’émulateur, puis pour terminer, cliquez sur OK dans la boîte de dialog Enregistrer. Il devrait générer automatiquement le code de test suivant.
@LargeTest @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityTestRule mActivityTestRule = new ActivityTestRule<>(MainActivity.class); @Test public void mainActivityTest() { ViewInteraction appCompatButton = onView( allOf(withId(R.id.myButton), withText("Click me"), isDisplayed())); appCompatButton.perform(click()); } }
Génial! Vous venez de créer votre premier test instrumenté! C’était super facile. Vous devriez probablement append une assertion pour en faire un véritable test, mais cela est assez facile avec l’enregistreur. Regardez cette vidéo pour aller un peu plus loin.
Je regarderais d’abord les vidéos, puis je lirais la documentation. C’est très utile. Le dernier lien concerne une série d’articles qui traitent de certaines choses importantes à considérer lors du choix des éléments à tester.
Je suggère d’utiliser le fichier gradle.build .
Ajouter un répertoire src / androidTest / java pour les tests (comme Chris commence à expliquer)
Ouvrez le fichier gradle.build et spécifiez-y:
android { comstackSdkVersion rootProject.comstackSdkVersion buildToolsVersion rootProject.buildToolsVersion sourceSets { androidTest { java.srcDirs = ['androidTest/java'] } } }
Appuyez sur “Synchroniser le projet avec le fichier Gradle” (sur le panneau supérieur). Vous devriez voir maintenant un dossier “java” (à l’intérieur de “androidTest”) est une couleur verte.
Maintenant, vous pouvez créer des fichiers de test et les exécuter.
Je pense que ce post de Rex St John est très utile pour les tests unitaires avec le studio Android.
http://rexstjohn.com/wp-content/uploads/2014/01/Screen-Shot-2014-01-24-at-6.26.20-PM-300×137.png
À partir de maintenant (studio 0.61), il suffit de maintenir une structure de projet appropriée. Pas besoin de créer un projet de test séparé comme dans éclipse (voir ci-dessous).
Android Studio v.2.3.3
Mettez en surbrillance le contexte de code que vous souhaitez tester et utilisez le raccourci clavier: CTRL
+ SHIFT
+ T
Utilisez l’interface de dialog pour terminer votre configuration.
Le framework de test est censé refléter la présentation de votre package de projet pour de meilleurs résultats, mais vous pouvez créer manuellement des tests personnalisés, à condition que vous disposiez du répertoire approprié et des parameters de génération.
Android Studio continue d’évoluer, les réponses ci-dessus ne seront donc plus applicables. Pour la version actuelle d’Android Studio 1.2.1.1, il existe un bon tutoriel sur les tests à l’adresse:
http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/
L’un des principaux changements, semble-t-il, est qu’avec Android Studio, l’application de test est intégrée au projet d’application.
Je ne suis pas sûr que cela vous aide à résoudre votre problème spécifique, mais j’ai trouvé un guide pour faire des tests avec un projet Gradle. Guide d’utilisation Android Gradle
Le moyen le plus simple que j’ai trouvé est le profil simplifié de mon article de blog suivant :
Bonne chance pour rendre votre code plus lisible, maintenable et bien testé!
Android Studio a été une sorte de cible mobile, en premier lieu en tant que prévisualisation pour les développeurs et maintenant en version bêta. Le chemin des classes de test dans le projet a changé au cours du temps, mais quelle que soit la version de l’AS que vous utilisez, le chemin est déclaré dans votre fichier .iml. Actuellement, avec la version 0.8.3, vous trouverez les éléments suivants dans le fichier iml interne:
Le fichier .iml vous indique où placer vos classes de test.
Depuis Android Studio 1.1, nous avons un support officiel (expérimental) pour écrire des tests unitaires (travaux Roboelecsortingc également).
Source: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support
Ajouter ci-dessous la lib dans le fichier gradle
androidTestComstack('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' })
Créez la classe HomeActivityTest dans le répertoire androidTest et, avant d’exécuter le test, ajoutez la chaîne flurry_api_key et sender_id à l’intérieur du fichier de ressources de chaîne et modifiez la valeur de l’échec et du cas de réussite.
@RunWith(AndroidJUnit4.class) public class HomeActivityTest { private static final Ssortingng SENDER_ID = "abc"; private static final Ssortingng RELEASE_FLURRY_API_KEY = "xyz"; @Test public void gcmRegistrationId_isCorrect() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); Assert.assertEquals(SENDER_ID, appContext.getSsortingng(R.ssortingng.sender_id)); } @Test public void flurryApiKey_isCorrect() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); Assert.assertEquals(RELEASE_FLURRY_API_KEY, appContext.getSsortingng(R.ssortingng.flurry_api_key)); } }