Exécution simple JUnit tests sur Android Studio (Ide) lors de l'utilisation d'un Gradle-en fonction de la configuration
Je suis en utilisant Android Studio/IntelliJ
de construire sur un Android
projet et souhaitez ajouter des simples JUnit
des tests unitaires. Quel est le dossier à droite pour ajouter de tels tests sur?
Android Gradle
plug-in définit une structure de répertoire avec src/main/java
pour le code source principal et src/instrumentTest/java
pour Android
tests.
D'essayer d'ajouter ma JUnit tests dans instrumentTest ne fonctionne pas pour moi. Je peux courir comme un Android
test (c'est ce que le répertoire semble) mais ce n'est pas ce que je cherche: je veux juste faire un simple JUnit
test.
J'ai essayé de créer un JUnit configuration d'essai pour cette Classe, mais qui n'a pas de travail, je suis en supposant que parce que je suis en utilisant un répertoire qui est marqué comme Android
Test au lieu de la Source.
Si je crée un nouveau dossier source et marki en tant que tel dans le Projet de la Structure, cela permet d'obtenir des essuyé la prochaine fois IntelliJ
actualise la configuration du projet à partir des fichiers de build gradle.
Quel est le moyen le plus approprié de la configuration de JUnit tests dans un gradle-fondé du projet android sur IntelliJ
? Qui structure de répertoire à utiliser pour cela?
- Malheureusement, je ne peux pas vous aider avec les tests que j'ai encore des difficultés avec moi-même, mais vous pouvez l'utiliser pour arrêter de IntelliJ essuyant les dossiers source:
java.srcDirs = ['src/main/java','src/instrumentTest/java']
dans lesourceSets
section de labuild.gradle
- Son de ne pas s'amuser à mettre en place, ni simple à entretenir, mais j'ai un peu eu en cours d'exécution à l'aide de la valeur par défaut
/src/androidTest/java
dossier avec robolectric JUnit tests, voir: stackoverflow.com/a/25473702/1406325 - Android Studio prend désormais en charge Locale de Tests Unitaires avec JUnit 4: stackoverflow.com/a/30273301/885464
- Cerruti mise à Jour:Android Studio de Démonstration pour savoir comment exécuter les cas de test goo.gl/ac06C0 et un exemple pour exécuter réseau d'appel d'essai goo.gl/bQFlmU
- Les répertoires des structures pour les tests et testé les classes doivent s'adapter. Voici comment le faire facilement: stackoverflow.com/a/36057080/715269
Vous devez vous connecter pour publier un commentaire.
Comme de Android Studio 1.1, la réponse est maintenant simple:
http://tools.android.com/tech-docs/unit-testing-support
Normalement, vous ne pouvez pas. Bienvenue dans le monde d'Android, où tous les tests doivent s'exécuter sur un appareil(à l'exception de Robolectric).
La raison principale est que vous n'avez pas réellement le cadre de ses sources, même si vous les convaincre de l'IDE pour exécuter le test en local, vous recevrez immédiatement un "Stub! Pas mis en œuvre" l'exception".
"Pourquoi?" vous pourriez vous demander? Parce que le
android.jar
que le kit de développement vous donne est en fait tout écrasé - toutes les classes et les méthodes sont là, mais ils ont tous simplement lever une exception. Il est là pour fournir une API, mais pas là pour vous donner toute mise en œuvre effective.Il y a un merveilleux projet appelé Robolectric qui met en œuvre beaucoup de le cadre, de sorte que vous pouvez exécuter des tests significatifs. Couplé avec une bonne maquette cadre (par exemple, Mockito), il rend votre travail gérable.
Plugin Gradle: https://github.com/robolectric/robolectric-gradle-plugin
apply plugin: 'java'
), l'ajouter à " des paramètres.gradle', ont une dépendance à votre projet Android (compile project(':plainJavaProjectName')
), et il suffit d'exécuter latest
tâche. (Pas encore testé mais devrait fonctionner!)Intro
De noter qu'au moment de la rédaction de robolectric 2.4 est la version la plus récente et n'a pas de support pour
appcompat v7
de la bibliothèque. Un soutien sera ajouté dans robolectric de la version 3.0 (pas de ETA encore). AussiActionBar Sherlock
peut provoquer des problèmes avec robolectric.À utiliser Robolectric dans Android Studio, vous avez 2 options:
(Option 1) - Exécution des tests JUnit avec Android Studio à l'aide d'un module Java
Cette technique utilise un module java pour tous vos tests avec une dépendance à votre android module et un test personnalisé coureur avec un peu de magie:
Instructions peuvent être trouvées ici: http://blog.blundellapps.com/how-to-run-robolectric-junit-tests-in-android-studio/
Également vérifier le lien à la fin de ce post pour lancer les tests à partir d'android studio.
(Option 2) - Exécution des Tests JUnit avec Android Studio à l'aide de robolectric-gradle-plugin
J'ai rencontré quelques problèmes de réglage jusqu'junit tests à exécuter à partir de gradle dans Android Studio.
C'est un exemple très simple du projet pour l'exécution des tests junit à partir d'un gradle projet basé sur Android Studio: https://github.com/hanscappelle/android-studio-junit-robolectric Cela a été testé avec Android Studio 0.8.14, JUnit 4.10, robolectric plugin gradle 0.13+ et robolectric 2.3
Buildscript (project/build.gradle)
Le script de construction est la construction.gradle fichier dans la racine de votre projet. Là, j'ai dû ajouter de la robolectric plugin gradle à classpath
Projet buildscript (App/build.gradle)
Dans le script de création de votre application module d'utiliser le
robolectric
plugin, ajouterrobolectric
config et ajouterandroidTestCompile
dépendances.Créer De Test JUnit Classes
Maintenant mettre les classes de test dans l'emplacement par défaut (ou mise à jour de gradle config)
Et le nom de vos classes de tests de fin de Test (ou encore de mise à jour de la configuration), l'extension de
junit.framework.TestCase
et d'annoter les méthodes d'essai avec@Test
.Exécuter Des Tests De
Prochaine exécuter les tests en utilisant gradlew en ligne de commande (le rendre exécutable à l'aide de
chmod +x
si nécessaire)Exemple de sortie:
Dépannage
source alternative répertoires
Tout comme vous pouvez avoir vos fichiers source java ailleurs que vous pouvez déplacer votre test fichiers sources. Juste mettre à jour gradle
sourceSets
config.package org.junit n'existe pas
Vous avez oublié d'ajouter la junit test de dépendance à l'application du script de création
java.lang.RuntimeException: Stub!
Vous êtes l'exécution de ce test avec la configuration à partir d'Android Studio, au lieu de la ligne de commande (Terminal onglet dans Android Studio). Pour l'exécuter à partir d'Android Studio, vous aurez à mettre à jour le
app.iml
fichier pour avoir le jdk entrée listés en bas. Voir deckard-gradle exemple pour plus de détails.Complet exemple d'erreur:
ERREUR: JAVA_HOME est fixé à un répertoire non valide
Voir cette SORTE de question pour trouver une solution. Ajouter le dessous de l'exportation de vous bash profil:
Complète du journal des erreurs:
De la Classe de Test pas trouvé
Si vous souhaitez exécuter vos tests à partir de Android Studio de Test Junit coureur au lieu de cela, vous aurez à développer le construire.gradle fichier un peu plus, de sorte que android studio pouvez trouver votre compilé classes de test:
à partir de: http://kostyay.name/android-studio-robolectric-gradle-getting-work/
Peu plus de ressources
Les meilleurs articles que j'ai trouvé autour de ce sont:
C'est maintenant pris en charge dans Android Studio de départ avec Android plugin Gradle 1.1.0, check this out:
https://developer.android.com/training/testing/unit-testing/local-unit-tests.html
Exemple d'application locale des tests unitaires sur GitHub:
https://github.com/googlesamples/android-testing/tree/master/unittesting/BasicSample
Pour Android Studio 1.2+ mettre en place un projet pour JUnit est assez simple essaient de suivre ce tutoriel:
C'est le plus simple de la partie de la configuration d'un projet pour JUnit:
https://io2015codelabs.appspot.com/codelabs/android-studio-testing#1
Suivre les dernières lien jusqu'à ce que "Exécutez vos tests"
Maintenant, si vous souhaitez intégrer à intrumentation test suivre ici:
https://io2015codelabs.appspot.com/codelabs/android-studio-testing#6
Veuillez voir cette tutoriel de l'Développeurs Android site officiel. Cet article montre également comment créer des maquettes pour vos tests.
Par le façon, il faut noter que le champ d'application des dépendances simple test Unitaire doit être "testCompile".