J'ai trouvé ce exemple où ils utilisaient PowerMock et EasyMock pour Stub / Mock The Menu et Classes Menuitem pour Android. J'ai essayé de faire quelque chose de similaire avec PowerMock et Mockito avec la classe d'activité.
Je comprends que beaucoup de méthodes sont finales et que, dans l'androïde.jar, ils viennent tous de lancer RunTimeException ("Stub!"). P>
Je comprends aussi que ce test n'est pas complet mais Je veux juste voir s'il est possible de se moquer de la classe d'activité Android. P>
mais étant donné que PowerMock vous permet de se moquer de cours avec des méthodes finales, ce code ne doit pas fonctionner? P>
@RunWith(PowerMockRunner.class) @PrepareForTest(Activity.class) public class MyTestCase extends TestCase { public void testPlease_JustWork() throws Exception { Activity mockActivity = PowerMockito.mock(Activity.class); PowerMockito.when(mockActivity.getTitle()).thenReturn("Title"); } }
3 Réponses :
Je viens d'essayer votre échantillon de code et ça marche ici, étrange. J'ai téléchargé PowerMock 1.4.5 avec Mockito et Junit, y compris les dépendances et utilisé l'Android.jar à partir du SDK (2.2). Il ne manque qu'avec l'exception si je supprime le @preparefortest. P>
Edit p>
Vous pouvez utiliser l'Android.jar avec le code d'exception supprimé, indiqué dans l'article que vous avez référencé. P>
J'ai téléchargé tout le projet Eclipse vers Maik.0x2a.at/powermocktests.zip . Vous devrez peut-être adapter le chemin à l'Android.jar
Eh bien ... J'utilisais la bibliothèque junite séparée que j'avais téléchargée alors une fois que je viens de recevoir tout le paquet de la maquette de puissance qui incluait tout et je me suis débarrassé de la réfraction à l'autre bibliothèque junit, a créé une nouvelle classe de test que j'ai eu un vert bar. Donc merci!
J'ai également eu des problèmes au cas où quelqu'un d'autre essaie cela. J'ai remarqué que l'ordre du chemin de construction Java est important. Si vous accédez à la commande et à l'onglet Exporter dans Eclipse, assurez-vous que votre dossier SRC est en haut, puis Javase-1.6, puis les pots PowerMock, puis enfin Android.jar.
Probablement pas une réponse directe à votre question, mais vous pouvez essayer Robolectric afin de tester parties de votre application Android sur votre PC. p>
Roboelectric évite le talon! Exception et vous donne des Minimal em> Android CLASSES Mise en œuvre P>
Je pense que la réponse est que l'ordre de vos bibliothèques référencées compte parce que l'Android.jar inclut certains talons pour Junit. P>
Vous devez vous assurer que sur votre projet de test, si vous allez sur "Propriétés", puis "Java Build Path '" que le jar Junit associé à la version complète de PowerMock que vous avez téléchargé apparaît sur la "commande et l'exportation" au-dessus em> l'android.jar. Si ce n'est pas le cas, le système résout le junit.framework et les packages Junit.Runner de Android.jar avant de les résoudre de la junit.jar inclus dans PowerMock. P>
Je réalise que cette question est ancienne, mais je pense que c'est la bonne réponse, donc je voulais m'assurer de le documenter sur la question. P>