98 votes

Pourquoi le programme d'exécution des tests Android signale-t-il "Suite de tests vide" ?

Je me heurte à un mur en essayant de comprendre pourquoi IntelliJ/Android signale "Empty test suite". J'ai un petit projet avec deux modules IntelliJ ("Projects" dans Eclipse). Le module de test unitaire a son propre AndroidManifest.xml, que j'ai collé en bas. J'essaie d'exécuter un ActivityUnitTestCase puisque les tests dépendront de l Context -objet.

Le nom du paquet du module principal est nilzor.myapp . Le nom du paquet du module de test est le suivant nilzor.myapp.tests

Pourquoi le programme d'exécution des tests ne détecte-t-il pas le testBlah() -comme un 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 le les fondamentaux des tests le document de test d'activité et j'ai essayé de suivre cette procédure Hello world test blog même si c'est pour Eclipse. Je n'arrive pas à faire en sorte que le test runner trouve et exécute mon test. Qu'est-ce que je fais de mal ?

Certaines des questions sur lesquelles j'ai encore des doutes sont les suivantes :

  1. Ai-je besoin d'une annotation au-dessus de la méthode de test unitaire ?
  2. Dois-je faire précéder la méthode de "test", ou est-ce seulement pour les tests JUnit ?
  3. Puis-je avoir des tests dans des sous-packages de nilzor.myapp.tests ?

Mais la question principale de ce billet est pourquoi le test runner ne détecte pas mon test ?

1voto

Janin Points 236

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 !

1voto

shocking Points 304

Mon problème a été causé par une exception lancée dans le fichier @BeforeClass de mon scénario de test. D'une manière ou d'une autre, elle ne faisait pas échouer le test - je ne l'ai découvert qu'en inspectant la sortie de logcat.

J'ai corrigé l'exception et soudain, mes tests fonctionnaient !

1voto

Francisco Junior Points 789

Après avoir été confronté au problème d'aujourd'hui - ne pas pouvoir exécuter les tests Android instrumentés avec l'erreur Empty suite - j'ai trouvé une question git à propos de ce problème et grâce à Stephan Linzner, j'ai pu exécuter les tests.

en résumé Vous devez cliquer avec le bouton droit de la souris sur le paquet de test et non sur la classe afin de faire fonctionner les tests.

Référence : https://github.com/googlecodelabs/Android-testing/issues/27#issuecomment-219074863

0voto

IgorGanapolsky Points 14540

Cet article m'a aidé : Suite de tests vide

En gros, je devais créer un paquet - instrumentTest/java - sous mon répertoire src, et y mettre tous les tests. Ensuite, je pourrais exécuter ces tests individuellement.

0voto

cdaringe Points 1

J'avais un projet Java brut où cela se produisait. Simplement Java + JUnit4. Le problème réside certainement dans quelque chose dans vos fichiers .idea/ ou .iml. J'ai supprimé le mien, réimporté, et finalement les tests ont fonctionné à nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X