J'ai un projet Android qui affiche "Hello World". Il a été créé à partir du modèle "Blank Activity" de Android Studio.
J'ajoute/crée ensuite une nouvelle classe Java classe dans mon package d'application (le même package qui a mon activité). Je l'appelle Shape et j'ajoute un constructeur simple
public class Shape {
public Shape(int i){
if (i==0){
throw new IllegalArgumentException("Cant have 0");
}
}
}
Génial. Maintenant, j'ai une classe qui ne touche pas du tout Android du tout, et je veux la tester unitaire. Que dois-je faire ensuite?
C'est là que ma question s'arrête. Ci-dessous je vais passer en revue ce que j'ai essayé.
J'écris mon test
package com.eghdk.getjunit4towork;
import org.junit.Test;
import static org.junit.Assert.*;
public class ShapeTest {
@Test(expected = IllegalArgumentException.class)
public void testShapeWithInvalidArg() {
new Shape(0);
}
}
À ce stade, je ne sais pas vraiment comment exécuter mes tests, mais essayez de le faire:
Je reçois ces erreurs lors de l'exécution
Erreur: (3, 17) Gradle: erreur: le package org.junit n'existe pas
Erreur: (5, 24) Gradle: erreur: le package org.junit n'existe pas
Erreur: (8, 6) Gradle: erreur: impossible de trouver la classe de symboles Test
Depuis Android Studio 1.1, il y a (expérimental) support du test unitaire . Quelques citations de cette page:
Vous devrez spécifier vos dépendances de test dans le fichier build.gradle de votre module Android. Par exemple:
dependencies { testCompile 'junit:junit:4.12' testCompile "org.mockito:mockito-core:1.9.5" }
Pour utiliser la prise en charge des tests unitaires dans AS, vous devez suivre les étapes suivantes:
Mettez à jour build.gradle pour utiliser le Android gradle plugin version 1.1.0-rc1 ou version ultérieure (soit manuellement dans le fichier build.gradle ou dans l'interface utilisateur dans Fichier> Structure du projet)
Ajoutez les dépendances de test nécessaires à app/build.gradle (voir ci-dessus).
Activez la fonction de test unitaire dans Paramètres> Gradle> Expérimental.
Synchronisez votre projet.
Ouvrez la fenêtre d'outils "Construire des variantes" (à gauche) et changez l'artefact de test en "Tests unitaires".
Créez un répertoire pour votre code source de test, c'est-à-dire src/test/Java. Vous pouvez le faire à partir de la ligne de commande ou à l'aide de la vue Projet dans la fenêtre de l'outil Projet. Le nouveau répertoire doit être surligné en vert à ce stade. Remarque: les noms des répertoires de source de test sont déterminés par le plugin gradle basé sur une convention.
- Créez votre test. Vous pouvez le faire en ouvrant une classe, en cliquant avec le bouton droit sur son nom et en sélectionnant "Aller à> Test". Ajoutez des cas de test.
- Faites un clic droit sur votre nouvelle classe ou méthode de test et sélectionnez "Exécuter ...".
- (Facultatif) Vous pouvez réduire le temps de compilation en utilisant directement Gradle. Pour ce faire, allez dans le menu Exécuter et sélectionnez "Modifier les configurations". Là, recherchez le modèle JUnit par défaut, supprimez l'étape "Make" avant le lancement et ajoutez à la place une étape "Gradle aware make" (laissez le nom de la tâche vide).
Il est important de savoir qu'il existe deux types de test: androidTest
et plain test
.
androidTest
est principalement destiné aux tests que vous exécutez sur un émulateur ou un périphérique, tels que les tests d'instrumentation. Depuis la ligne de commande, vous utilisez ./gradlew connectedCheck
pour les exécuter.test
est destiné aux tests que vous ne souhaitez pas exécuter sur un périphérique, comme le test unitaire que vous avez écrit. Vous courez ./gradlew test
pour exécuter ces tests.Comme indiqué dans le devis, vous basculez entre androidTest
et test
dans Android Studio en changeant l'artefact de test.
Naturellement, il est préférable de ne pas exécuter de tests sur un appareil ou un émulateur, car cela accélère beaucoup le processus de test . Avec la nouvelle prise en charge des tests unitaires expérimentaux, vous accédez à des API tronquées Android sans utiliser d'appareil. Cela vous permet de déplacer plus de tests de androidTest
vers test
.
Pour Android studio 1.2 ou supérieur, j'inclus cette réponse car c'est l'un des premiers classements sur google et c'est un excellent et très facile à suivre tutoriel sur la façon de définir des tests unitaires avec Android Studio, voici le lien: https://io2015codelabs.appspot.com/codelabs/Android-studio-testing#1
Après avoir perdu 2 heures à essayer de lancer le test, je l'ai finalement fait avec le lien ci-dessus, j'espère que c'est aussi utile pour vous que pour moi.
Accédez aux paramètres, puis créez des outils, puis gradle puis expérimental. En décochant expérimental, activez tous les artefacts de test. C'est la fin du jeu