11
votes

Test de l'unité Android dans Eclipse: "Échec du lancement du test"

Je viens de commencer à essayer de mettre en place des tests unitaires dans ce qui est essentiellement ma première application Android. J'ai eu un enfer de temps de trouver une ressource pour cela, mais a finalement été capable de gratter ce que je suis espéré em> était le bon chemin en avant.

Tout d'abord, c'est ce que j'ai fait. P>

Dans Eclipse, j'ai cliqué sur mon projet que j'aimerais créer un projet de test pour. J'ai sélectionné AndroidTools -> Nouveau projet de test J'ai rempli les informations nécessaires en sélectionnant un emplacement de ../myapp/TestS pour le nouveau projet et sélectionné MyApp comme projet à tester. Tout a été laissé par défaut. P>

Bien que cela exécute, j'ai reçu ci-dessous comme une erreur: P>

[2011-04-01 08:13:02 - WPMSTEST] R.Java a été modifié manuellement! Revenant à la version générée! P> BlockQuote>

Mais tout semblait bien. J'ai eu un nouvel arbre source dans mon dossier Tests. P>

J'ai donc essayé de l'exécuter (d'abord sur le matériel, puis sur l'émulateur) par Runas -> Test Junit Android. P>

Les deux courses, j'ai reçu le ci-dessous dans ma console Eclipse: P>

[2011-04-01 08:23:04 - WPMSTESTEST] Lancement de l'instrumentation Android.Test.instrumentationTestrunner sur le périphérique Emulator-5554
[2011-04-01 08:23:04 - WPMSTEST] n'a pas pu lancer de test p> BlockQuote>

Mes deux fichiers manifestes: p>

WPMSTESTESTESTEST: P>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.WPMS"
  android:versionCode="1"
  android:versionName="1.0">
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher_wpms">
    <activity android:name=".WPMS"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>    

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


5 commentaires

Avez-vous d'autres messages d'erreur Verbose sur la raison pour laquelle le test de test échoue? Une trace de pile ou similaire?


Où allais-je le voir? La console? C'est à peu près de la console Eclipse.


Y a-t-il des erreurs signalées à la vue de journal du DDMS? Peut-être qu'un de vos cas de test jette une exception.


AH MOMENT IDIOT détecté. J'avais créé une classe allTestes, mais je n'avais jamais eu de test de test. Android a eu un problème lancant un test qui n'était pas là ... merci de créer mon moment de zen!


J'ai rencontré cette erreur et cliquez simplement sur le projet de test à la ré-exécution du test fixe le problème, pour une raison quelconque.


4 Réponses :


0
votes
[2011-04-01 08:13:02 - WPMSTest] R.java was modified manually! Reverting to generated version!
You get this error when you manually make changes in the R.java file. At times, when you clean the project, R.java file goes missing. At such occasion you must either copy the same program's R.java(if stored somewhere as a copy) or create an entire new project. For your second issue, I too have got similar error when I was testing my app on the device. I had to make changes in the shell using $adb. then the device got recognised.

2 commentaires

Comme il fonctionne dans Eclipse, les modifications manuelles du fichier R ne devraient avoir aucun effet sur son projet, car l'IDE les reverra de toute façon. En outre, il suffirait de faire un nettoyage complet sur le projet, d'avoir un tout nouveau fichier R généré.


Oui, je pense que le problème du fichier R.java n'est pas l'ensemble de la question - sachant que ce que cela n'a échoué est formidable (l'application fonctionne correctement sur l'appareil sans le code de test)



15
votes

Je manquais un testSuite dans mon projet de test. Une fois que j'avais ma classe AllTests étendre testsuite, j'ai dépassé l'erreur.


3 commentaires

Ceci est probablement courant si vous ne réalisez pas que Android ne prend pas en charge Junit 4 .


@SIDDHARTH Avez-vous des sources?


J'ai mis une source simple qui illustre Junit4 travaillant sur Android.



3
votes

Pour moi, le problème était que j'utilisais Junit 4. Lorsque j'ai changé vers Junit 3, cela a commencé à travailler. J'espère que cela vous aidera.


2 commentaires

Junit 4 fonctionne, mais vous devez l'utiliser comme Junit 3: classe doit prolonger TestCase, le nom de la méthode doit commencer par "test" et @Test Annotation ne fait rien (il ne peut pas être résolu à l'intérieur de l'émulateur).


@Ken - est-ce vrai même aujourd'hui ?? Je reçois la même erreur même si j'utilise @Test Annotation et expresso 2.2.1 et Junit4. S'il vous plaît conseiller quoi faire ..



0
votes

J'ai eu le même problème: Junit 3 Testcase fonctionne, mais lors de l'exécution de Junit 4 TestCase, j'ai "échoué à lancer le test".

Mais après avoir suivi la suggestion de Ken, c'est-à-dire que la classe de test Junit 4 prolonge TestCase et renommer la méthode de test avec le préfixe "Test", le test lance et exécute le test!


0 commentaires