9
votes

Tentative de classe d'activité Android à l'aide de PowerMockito jette la runtimeException "Stub!"

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");
    }
}


0 commentaires

3 Réponses :


0
votes

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.

Edit

Vous pouvez utiliser l'Android.jar avec le code d'exception supprimé, indiqué dans l'article que vous avez référencé.


3 commentaires

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.



5
votes

Probablement pas une réponse directe à votre question, mais vous pouvez essayer Robolectric afin de tester parties de votre application Android sur votre PC.

Roboelectric évite le talon! Exception et vous donne des Minimal Android CLASSES Mise en œuvre


0 commentaires

2
votes

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.

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 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.

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.


0 commentaires