Je me cogne la tête contre le mur ici en essayant de comprendre pourquoi IntelliJ / Android rapporte "Suite de tests vide". J'ai un petit projet avec deux modules IntelliJ ("Projets" dans Eclipse). Le module de test unitaire a son propre AndroidManifest.xml, que j'ai collé en bas. J'essaye d'exécuter un ActivityUnitTestCase
, puisque les tests Context
dépendront de -object.
Le nom de package du module principal est nilzor.myapp
. Le nom pacakge du module de test estnilzor.myapp.tests
Pourquoi le testeur ne détecte-t-il pas la testBlah()
méthode -méthode comme test?
<?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nilzor.myapp.tests"
android:versionCode="1"
android:versionName="1.0">
<!-- We add an application tag here just so that we can indicate that
this package needs to link against the android.test library,
which is needed when building test cases. -->
<application>
<uses-library android:name="android.test.runner"/>
</application>
<!--
This declares that this application uses the instrumentation test runner targeting
the package of nilzor.myapp. To run the tests use the command:
"adb shell am instrument -w nilzor.myapp.tests/android.test.InstrumentationTestRunner"
-->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="nilzor.myapp"
android:label="Tests for nilzor.myapp"/>
</manifest>
Et voici ma classe de test :;
package nilzor.myapp.tests;
public class NilzorSomeTest<T extends Activity> extends ActivityUnitTestCase<T>{
public NilzorSomeTest(Class<T> activityClass){
super(activityClass);
}
@SmallTest
public void testBlah(){
assertEquals(1,1);
}
}
J'ai lu les principes de base des tests , le document de test d'activité et essayé de suivre ce blog de test Hello world , même si c'est pour Eclipse. Je n'arrive pas à faire en sorte que le testeur trouve et exécute mon test. Qu'est-ce que je fais mal?
Certaines des questions sur lesquelles je ne suis toujours pas sûr sont:
- Ai-je besoin d'une annotation au-dessus de la méthode de test unitaire?
- Dois-je préfixer la méthode avec "test", ou est-ce uniquement pour les tests JUnit?
- Puis-je avoir des tests dans des sous-packages de
nilzor.myapp.tests
?
Mais la question principale de cet article est pourquoi le testeur ne détecte-t-il pas mon test ?
la source
cmd+shift+t
raccourci qui créera automatiquement une classe de test à l'emplacement correct du package qui correspond à la classe que vous modifiez actuellement.@Test
marqueur au-dessus du test.Réponses:
Vous devez fournir un constructeur par défaut pour votre classe de test, par exemple:
sur vos autres questions:
Non. Mes tests fonctionnent toujours sans aucune annotation, mais je suppose que c'est une bonne pratique de les avoir. Il vous permet de spécifier la taille des tests à exécuter. Voir À quoi servent les annotations @SmallTest, @MediumTest et @LargeTest dans Android? pour plus de détails.
Oui, vous avez besoin du préfixe "test". InteliJ donne un avertissement "méthode jamais utilisée" lorsqu'il n'y a pas de préfixe "test" et ignore cette méthode pendant l'exécution du test.
Oui. J'ai mes tests organisés en sous-packages et cela semble bien fonctionner.
la source
Si cela se produit "tout d'un coup" ou "cela fonctionnait il y a 5 minutes", ma solution était d'aller dans les configurations Exécuter / Déboguer et de supprimer toutes les configurations sous "Tests Android". Parfois, ces configurations sont corrompues si je refactore la classe testée (par exemple en passant à un nouveau package).
la source
Create 'Tests in XXX...
- puis cela a fonctionné à nouveauRien de ce qui précède ne l'a résolu pour moi. Ce qui a aidé était de suivre les instructions :
la source
J'ai eu un problème similaire. Je ne sais pas pourquoi cela se produit, mais j'ai pu résoudre ce problème en accédant à: "Fichier"> "Invalider les caches / redémarrer" dans Android Studio.
la source
Je ne sais pas si cela aide pour Android Studio, mais j'ai eu une sorte de conflit Intellij-Gradle. Résolu le problème en "faisant un clic droit" sur le fichier de test et en appuyant sur "compiler le fichier ... Test.java". Après cela, je pourrais recommencer des tests uniques.
la source
J'ai eu le même problème sur Android Studio 2.3.1, il s'avère que c'était juste un bug avec AS. L'exécution du même test sur la version 2.2.1 fonctionne bien.
Si vous utilisez uniquement Android Studio sur le canal Cannary, je vous recommande également d'installer une version stable. http://tools.android.com/tips/using-multiple-android-studio-versions
la source
J'ai eu des tests qui fonctionnaient bien jusqu'à ce
gradle
que le studio Android soit mis à niveau.Outre l'ajout d'un constructeur par défaut à vos tests, vous devrez peut-être faire certaines de ces choses pour que votre suite de tests fonctionne
Sous
src/
créerandroidTest/java/<your-package-name>/test
. Notez leandroidTest
. Tout le reste, y comprisinstrumentTest
ne fonctionnera pas.Ajouter ceci à
build.gradle
Ajoutez ceci à la
AndroidManifest.xml
la source
Pour Intellij 15, j'ai résolu ce problème en:
a. Faites un clic droit sur votre répertoire source (généralement src) cliquez sur «Source».
b. Cliquez avec le bouton droit sur votre répertoire de test, cliquez sur «Test»
c. Faites un clic droit sur votre répertoire de sortie, cliquez sur `` Exclu ''
a. Cliquez sur le bouton radio «Utiliser le chemin de sortie de compilation du module»
b. Sélectionnez votre répertoire de chemin de sortie pour «Chemin de sortie»
c. Sélectionnez votre répertoire de chemin de test pour «Chemin de sortie de test»
la source
De toute évidence, vous avez besoin d'un équipement cible pour exécuter vos tests car ce sont des tests instrumentés. Pour certaines raisons, le studio Android ne vous demande parfois pas de pointer vers cet appareil cible et affiche simplement le message «Vider la suite de tests». Il existe différentes façons de résoudre ce problème, en voici quelques-unes:
exécutez votre application principale et sélectionnez un appareil cible ou
aller à la configuration Exécuter (Exécuter / Exécuter ... / Modifier les configurations) et modifier les options de cible de déploiement
la source
Dans mon cas, aucune des réponses précédentes n'a fonctionné. La solution consistait simplement à déplacer la classe de test vers un autre package .
Cela s'est passé sous
androidTest/
la source
Dans mon cas, ce problème a été causé par une erreur dans mon code, en fait c'était dans la classe d'application, donc l'activité cible n'a pas été ouverte et la sortie de test s'imprime
J'ai essayé d'exécuter des tests directement à partir du terminal avec
adb shell am instrument -w -r -e package your.package -e debug false android.support.test.runner.AndroidJUnitRunner
. Avec cela, il imprime pour vous beaucoup plus sur l'exception.la source
J'ai eu ce problème parce que j'avais ceci dans mon build.gradle:
Même si je n'utilisais pas Android Test Orchestrator (j'ai dû copier les tutoriels par erreur).
Commenter cela a résolu le problème pour moi.
la source
Aucune des autres solutions n'a fonctionné pour moi, mais j'ai pu le faire fonctionner simplement en désinstallant l'application ou la suite de tests existante, puis en exécutant les tests.
la source
Dans mon cas, le projet sur lequel je travaillais comportait quelques modules. Aucune des solutions que j'ai trouvées pour cette erreur ne m'a aidé, puis j'ai réalisé que si j'ajoutais les dépendances de test dans LES DEUX fichiers build.gradle, les tests commençaient à fonctionner comme par magie. Peu importe si vos tests ne résident que dans 1 des modules, les deux fichiers gradle doivent inclure les dépendances et la valeur testInstrumentationRunner.
Donc, si comme moi, aucune des autres réponses ne vous a aidé, essayez d'ajouter ces lignes au fichier build.gradle de chacun de vos modules:
puis ajoutez également:
la source
Je viens de renommer le fichier et le problème est résolu.
la source
J'ai eu le même problème, et la raison en était que ma classe de test n'avait pas Test à la fin du nom de la classe!
la source
Mon problème a été causé par une exception lancée dans la
@BeforeClass
méthode de mon cas de test. Cela n'entraînait pas un échec du test - je ne l'ai trouvé qu'en inspectant la sortie de logcat.J'ai corrigé l'exception et soudain mes tests étaient en cours d'exécution!
la source
Après avoir affronté le problème aujourd'hui - ne pas pouvoir exécuter les tests Android instrumentés avec une erreur de suite vide - j'ai trouvé un problème git à propos de ce problème et grâce à Stephan Linzner, j'ai pu exécuter les tests.
tl; dr Vous devez cliquer avec le bouton droit sur le package de test et non sur la classe pour exécuter les tests.
Référence: https://github.com/googlecodelabs/android-testing/issues/27#issuecomment-219074863
la source
Cet article m'a aidé: suite de tests vide
Fondamentalement, je devais créer un package - instrumentTest / java - sous mon répertoire src, et y mettre tous les tests. Ensuite, je pourrais exécuter ces tests individuellement.
la source
J'avais un projet Java brut où cela se produisait. Simplement Java + JUnit4. Il réside définitivement avec quelque chose dans vos fichiers .idea / ou .iml. J'ai mis au rebut le mien, réimporté et finalement les tests ont recommencé.
la source
La classe de test peut être exclue de la compilation. Corrigez-le dans setting-compiler-exclude.
la source
Voici mes étapes de débogage que je traverse quand Android Studio décide tout à coup d'arrêter d'exécuter / de déboguer les tests (Et ça arrive souvent de façon embarrassante !!):
J'ajouterai plus de correctifs au fur et à mesure que je les rencontrerai!
la source
Je n'ai rien fait et le problème a disparu après une demi-journée de douleur, j'ai ouvert et fermé les projets plusieurs fois, j'ai exécuté les tests de chaque classe manuellement, peut-être que cela a résolu mon problème.
la source
Dans le studio Android avec le framework spock, j'ai changé la version de mon gradle de 2.2.2 à 3.2.1 et tout se passe bien.
la source
La réponse acceptée n'a pas résolu mon problème. J'ai donc décidé de copier
ExampleInstrumentedTest
ce qui est créé par défaut dans Android Studio et qui s'exécute sans aucun problème, je l'ai renommé pendant le processus de copie (pas de Refactor-> Renommer après la copie!) Et y ai collé le contenu de mon test unitaire. Après cela, l'erreur a disparu.la source
J'ai rencontré l'erreur "Suite de tests vide" en essayant d'exécuter des tests unitaires locaux dans mon projet Android Studio 3.0.
Après avoir lu la documentation du développeur Android , je me suis rapidement rendu compte que le problème était causé par ma configuration gradle qui comprenait les lignes suivantes.
La classe AndroidJUnitRunner est un exécuteur de test JUnit qui vous permet d'exécuter des classes de test de style JUnit 3- ou JUnit 4 sur les appareils Android .
Étant donné que mes tests étaient locaux et ne nécessitaient donc pas de s'exécuter sur aucun appareil, la suppression des entrées com.android.support.test ... ci-dessus m'a permis d'exécuter les tests unitaires.
la source
Je faisais des insertions dans une base de données dans la méthode @BeforeClass. J'ai réalisé que j'avais un problème de mappage objet / base de données. Ce problème de mappage de données a été la cause de ce problème pour moi.
la source
Dans mon cas, j'avais mes tests instrumentés
androidTest/java/<package.name>/MyTestingClass
, mais j'avais réglé ma variante de construction actuelle sur "préproduction". Et voilà le point! Comme spécifié dans la documentation d'Android Studio :Le message a
Class not found. Empty test suite.
continué à apparaître jusqu'à ce que je fasse ceci:Ajoutez cette ligne à mon build.gradle :
Ensuite, j'ai exécuté à nouveau les tests et cette fois ils fonctionnent parfaitement !!!
la source
Cela m'est arrivé lorsque j'ai marqué par erreur une variable de classe non fictive avec l'annotation.
@Mock
Supprimé l'annotation et les tests se sont déroulés avec succès. Cela s'est produit avec Junit 4.5 sur Android Studiola source
Pas une solution mais une solution de contournement qui vous remettra rapidement sur les rails:
Tout d'abord, trouvez un test qui fonctionne. J'écrivais un nouveau test où j'ai eu l'erreur «suite de tests vide». J'ai fait d'autres tests et ils fonctionnaient comme d'habitude.
Copiez le fichier de test qui fonctionne. Exécutez-le pour vous assurer que cette copie fonctionne comme l'original.
Retirez le corps et remplacez-le par votre nouveau code de test.
Le test devrait maintenant fonctionner.
Nous avons passé environ deux heures à essayer de trouver la cause, mais en vain.
la source