Vient de télécharger Android Studio, qui est basé sur l’idée d’Intellij.
Comment créer des tests?
Je remarque qu’il existe une option pour créer un module de test mais que cela ne semble rien faire, créez seulement 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 vous donner deux exemples simples pour vous aider à comprendre comment fonctionnent les tests. Si vous suivez pendant les 10 prochaines minutes, vous serez tous prêts à ajouter 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
est un exemple.)Créez un nouveau projet et vous verrez les dossiers par défaut suivants.
Tout est déjà là et n'attend que vous pour créer vos tests. Tout est déjà installé!
Ouvrez le fichier ExampleUnitTest
présenté 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 flèche unique pour en exécuter un seul. (Dans ce cas, il n'y a qu'un seul test, ils font donc tous les deux la même chose.)
Il devrait passer (tant que 2 + 2
est toujours 4
lorsque 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 portant 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écutez-le à nouveau et vous devriez le voir passer. Félicitations, vous venez de créer votre propre premier test! (Bien, je suppose que techniquement, c'était le mien, mais, hé, assez proche. Ce qui est à moi est à vous.)
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 que l'émulateur est configuré, il devrait l'avoir démarré et exécuté 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 propre petit utilisateur de robot que vous pouvez faire tester votre application. Vous pouvez lui dire 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 venons de commencer, utilisons la fonction fonction d’enregistrement automatique . C'est super simple.
Commencez par ajouter un bouton à votre interface utilisateur afin que nous puissions travailler avec quelque chose. J'ai fait ça:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
Android:id="@+id/myButton"
Android:text="Click me"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"/>
</Android.support.constraint.ConstraintLayout>
Puis appuyez sur Exécuter> Enregistrer le test d'espresso dans le menu.
Une fois l’opération lancée, cliquez sur le bouton dans l’émulateur, puis, pour terminer, choisissez OK dans la boîte de dialogue Enregistrer. Il devrait générer automatiquement le code de test suivant.
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> 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 ajouter une assertion pour en faire un vrai test, mais c'est assez facile à faire avec l'enregistreur aussi. Regardez cette vidéo pour aller un peu plus loin.
Je regardais d'abord les vidéos, puis lisais la documentation. Tout cela est très utile. Le dernier lien est une série d’articles qui traitent de points importants à prendre en compte lors du choix d’un test.
Edit: À partir de .1.8, cela est maintenant supporté par l'EDI . Veuillez suivre les instructions qui y figurent au lieu de suivre les instructions ci-dessous.
À la suite du Guide de l'utilisateur du plug-in Android Gradle , j'ai réussi à obtenir des tests sur la ligne de commande en effectuant les étapes suivantes sur un projet nouvellement créé (j'ai utilisé le package par défaut 'com.example.myapplication'):
Cela a exécuté mes tests et placé les résultats de test dans MyApplicationProject/MyApplication/build/reports/instrumentTests/connected. Je commence à tester Android applications, mais cela semble fonctionner correctement.
À partir de l'EDI, il est possible d'essayer et d'exécuter la même classe de test. Vous aurez besoin de
Cependant, cela échoue (le chemin de classe utilisé lors de l'exécution des tests ne contient pas le répertoire de sortie du test). Cependant, je ne suis pas sûr que cela fonctionnerait malgré tout, car je crois comprendre qu'un exécuteur de test spécifique à Android est requis.
Je suggère d'utiliser le fichier gradle.build.
Ajouter un src/androidTest/Java répertoire pour les tests (Comme Chris commence à expliquer)
Ouvrez le fichier gradle.build et spécifiez-y:
Android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
sourceSets {
androidTest {
Java.srcDirs = ['androidTest/Java']
}
}
}
Appuyez sur "Synchroniser le projet avec le fichier Gradle" (dans le panneau supérieur). Vous devriez voir maintenant un dossier "Java" (à l'intérieur de "androidTest") est une couleur verte.
Vous pouvez maintenant 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 Android studio.
http://rexstjohn.com/wp-content/uploads/2014/01/Screen-Shot-2014-01-24-at-6.26.20-PM-300x137.png
Android Studio v.2.3.3
Mettez en surbrillance le contexte de code que vous voulez tester et utilisez le raccourci clavier: CTRL
+ SHIFT
+ T
Utilisez l'interface de dialogue pour terminer votre configuration.
La structure de test est supposée refléter la disposition 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 et des paramètres de construction appropriés.
Dès maintenant (studio 0.61), maintenir une structure de projet appropriée est suffisant. Pas besoin de créer un projet de test séparé comme dans Eclipse (voir ci-dessous).
Android Studio continue d'évoluer, de sorte que les réponses ci-dessus ne seront éventuellement plus applicables. Pour la version actuelle de Android Studio 1.2.1.1, un tutoriel de Nice sur les tests est disponible à l'adresse suivante:
http://evgenii.com/blog/testing-activity-in-Android-studio-tutorial-part-1/
L’un des principaux changements semble être que, avec Android Studio, l’application de test est intégrée au projet d’application.
Je ne sais pas si cela vous aidera, mais j'ai trouvé un guide pour effectuer des tests avec un projet Gradle. Guide de l'utilisateur Android Gradle
Le moyen le plus simple que j'ai trouvé est la rationalisation de mon article de blog suivant :
Bonne chance pour rendre votre code plus lisible, maintenable et bien testé!
Android Studio est en quelque sorte une cible mouvante. Il s’agit tout d’abord d’un aperçu pour les développeurs, puis d’une version bêta. Le chemin d'accès aux classes de test du projet a changé au fil du temps, mais quelle que soit la version de AS utilisée, le chemin d'accès est déclaré dans votre fichier .iml. Actuellement, avec la version 0.8.3, vous trouverez ce qui suit dans le fichier iml interne:
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="Java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="Java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="Java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/Java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/groovy" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
Le fichier .iml vous indique où placer vos classes de test.
À partir de Android Studio 1.1, nous disposons du support officiel (expérimental) pour la rédaction de tests unitaires (qui fonctionnent également en Roboélectrique).
Source: https://sites.google.com/a/Android.com/tools/tech-docs/unit-testing-support
Ajouter ci-dessous lib à l'intérieur du fichier gradle
androidTestCompile('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 dans le fichier de ressources de chaîne, puis modifiez la valeur en cas d'échec et de réussite.
@RunWith(AndroidJUnit4.class)
public class HomeActivityTest
{
private static final String SENDER_ID = "abc";
private static final String 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.getString(R.string.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.getString(R.string.flurry_api_key));
}
}