moi utilisé My principale puis dans mon projet de test p> mais quand je cours comme fragment code> du package de compatibilité Android, à l'aide du
android-support-v4.jar code>. Mais je ne peux pas faire le test Junit à ce sujet.
La fragmentactivité code> est déclarée comme suit p>
Android Junit Test CODE> PRODUCY
FAILEDTOCREATESTS [RUNNER: JUNIT3] CODE>
java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:239)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Caused by: java.lang.reflect.InvocationTargetException
at com.android.myproject.test.MyActivityClassTest.<init>(MyActivityClassTest.java:28)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87)
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73)
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:263)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:185)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:336)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3982)
at android.app.ActivityThread.access$2900(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1901)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.android.myproject.MyActivityClass
... 19 more
6 Réponses :
Je suppose que ActivityStrumentationTestCase2 code> n'est pas compatible avec
fragments code>.
Vous devriez essayer quelque chose comme Robolectric . P>
Non c'est compatible. Quand j'ai créé mes tests dans le même projet, cela a fonctionné. Merci Marcarse pour ce lien. :)
Ensuite, vous pourrez écrire des tests comme celui-ci: p> < Pré> xxx pré> ou tout ce que vous devez tester. p> p> ActivityInStrumentationTestCase2 code> est compatible avec
fragments code>. Vous ne devriez suivre que les étapes mentionnées dans Test Android: Bibliothèques externes A>, qui a été mis à jour pour couvrir le cas du
android-support-v4.jar code> aussi.
Merci Dtmilano, ce lien que vous avez fourni est vraiment utile, mais j'ai ajouté que la voie de construction des bibliothèques externes. Toujours malchance pour moi. Quand j'ai créé mes tests dans le même projet, cela fonctionnait :)
Ce que vous avez publié est une solution de contournement qui vous mènera à un autre problème: comment ne pas expédier les tests avec votre application.
Utilisez-vous Eclipse? Je suis sûr que ça marche parce que je l'utilise.
Oui, moi en utilisant Eclipse :( et si j'utilise le même projet que le test, cela me posera problème pour moi plus tard? :( Je pense que après avoir terminé mon projet, je supprimerai ce forfait de test supplémentaire et des entrées manifestes pour tester. Est-ce que ça va bien?
Ensuite, j'ajoute un lien de l'Android.Support.v4 dans le projet principal de mon projet de test, la construction est passée, mais lors de l'exécution du test avec "test de débogage de fourmis", toujours satisfaite par: java.lang.noclassdefferror: com.mobile. client.activity.QuesttionListActivity
Mais il y a un problème de fragments de soutien. fragment.geview () code> retourne null. Mais avec android.app.fragments ça marche bien. J'utilise (extension) ActivityUnitterCase. Une idée?
J'ai trouvé une solution
Le problème était p> Il ne peut pas trouver le chemin de classe même si je renvoie le même pot dans les deux projets (j'ai également essayé en utilisant Jar séparé pour le projet) P> Maintenant, j'ai créé mon environnement de test dans le même projet dans mon puis j'ai ajouté ma classe de test dans mon package spécial pour tester p> tout est maintenant Travailler bien :) p> p> androidmanifest. xml code> p>
Cela fonctionne avec succès, mais je voudrais toujours savoir pourquoi cela se produit lors de l'utilisation d'un projet de test séparé ...
Voir cette question pour une meilleure réponse: p>
La fragmentationActivité ne peut pas être testée via ActivityStrumentationTestCase2 P>
Vous devez exporter la référence à la bibliothèque de compatibilité depuis votre application. P>
Ceci est en retard, mais je résous le même problème par Ensuite, assurez-vous que le projet principal est sur le chemin de construction fort> du projet de test.
Faites de même pour toute autre bibliothèques que les projets principaux et de test peuvent partager. P>
J'ai essayé presque une journée à faire face à ce problème et j'ai trouvé une solution d'un autre POST P>
Fondamentalement, votre support d'Android-support-v4.jar (dans mon cas) est utilisé dans l'application doit être identique à ce que vous avez utilisé dans votre demande de test. La meilleure façon de faire est de supprimer le même pot du répertoire de la Libs de votre projet de test et d'exporter la même chose de votre projet d'application. De cette façon, vous pouvez vous débarrasser de cette question à coup sûr. P>