8
votes

Comment faire fonctionner PowerMock avec Dexmaker

J'essaie d'intégrer PowerMock comme une dépendance pour mes tests Android à l'aide de la construction suivante .Gradle configuration: xxx

Cependant, le compilateur se plaint de xxx

à la recherche de la structure du pot, j'ai remarqué que Dexmaker et PowerMock Déclarez un Mockmaker dans Mockito-extensions

img

Qu'est-ce qu'un MockMaker? Comment vont-ils différer? Et la question la plus importante: est-il possible de faire fonctionner PowerMock pour bien fonctionner avec Dexmaker?

Merci d'avance. Toute aide serait grandement appréciée.


0 commentaires

3 Réponses :


10
votes

Mockmaker est un module de colle qui intègre Dexmaker avec Mockito. Il faut que ce soit nécessaire pour Mockito de générer des classes de béton avec des fichiers Dalvik .dex au lieu de fichiers JVM .Class.

Il est possible que PowerMock fonctionnera avec Dexmaker, mais il est peu probable que les fonctionnalités avancées PowerMock fonctionnent. En particulier, PowerMock annonce cette annonce :

PowerMock utilise un chargeur de classe personnalisé et une manipulation de byTecode pour permettre la moqueur de méthodes statiques, constructeurs, classes finales et méthodes, méthodes privées, enlèvement des initialisateurs statiques et plus.

Ce chargeur de classe personnalisé est peu susceptible de fonctionner sur DALVIKVM.


0 commentaires

1
votes

J'ai eu le même problème et je viens de trouver la solution ici . Cela implique un peu de travail manuel et vous devrez modifier vous-même le fichier JAR.

Alors, que Narihar suggère est la suivante.

  1. Faites une copie de sauvegarde de PowerMock-Api-Mockito-1.5.5.jar
  2. Renommez Powermock-ApiC-Mockito-1.5.5.jar à PowerMock-api-Mockito-1.5.5.zip
  3. Unzip Powermock-api-mockito-1.5.5.zip
  4. CD PowerMock-API-Mockito-1.5.5 /
  5. RM -RF Mockito-Extensions
  6. JAR CF PowerMock-ApiC-Mockito-1.5.5.jar Meta-Inf / Org /
  7. Mettez le nouveau pot dans votre foleur Libs.

    Cette solution a fonctionné pour moi. Laissez-moi savoir si cela fonctionne aussi pour vous.

    En outre, je peux voir que nous utilisons les mêmes dépendances. Dans mon cas, je devais enlever manuellement le hamcrest.jar et l'objenesis.jar comme il y avait des confilcts.

    espère que cela aide.


1 commentaires

Vous suggérez-vous que Dalvik permettra ensuite à l'utilisation de cette fonctionnalité et qu'il est possible de remplacer les méthodes finales, par exemple?



3
votes

Vous pouvez essayer de mettre cela dans votre build.Gradle, il m'a résolu le même problème

android{
...

packagingOptions{
    exclude 'mockito-extensions/org.mockito.plugins.MockMaker'
}

...

}


0 commentaires