9
votes

Courir Junit & Powermock avec Mockito à travers PowerMockRunner de Maven

Je ne suis pas capable de lancer PowerMock à travers Maven. Je suis le PowerMock Mockito et PowerMockRunner pour avoir conduit un test Junit.

Voici le test: P>

Running TestSuite
[ERROR]: No test suite found.  Nothing to run
Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 1.053 sec <<< FAILURE!

Results :

Failed tests:
  testSingleEventNotification(pt.estradasportugal.traffic.services.events.AlertNotificationsTest)
  testTwoEventNotification(pt.estradasportugal.traffic.services.events.AlertNotificationsTest)

Tests run: 4, Failures: 2, Errors: 0, Skipped: 0
  • org.mockito | Mockito-tout | 1.8.0 li>
  • junit | JUNIT | 4.6.0 LI>
  • org.powemock.modules | PowerMock-Module-Junit4 | 1.3.1 LI>
  • org.powermock.api | PowerMock-Api-Mockito | 1.3.1 LI> ul>

    Lorsque je exécute mvn -dtest = ALTERNOTIFICATIONS Test duest code> MVN dit qu'il n'y a pas de test à exécuter. Mais si j'exécute la même classe d'essai d'Eclipse, tout fonctionne bien. P>

    suis-je en train de faire quelque chose de mal? P>


    Voici mon pom.xml ci-dessous (les parties correspondantes) xxx pré>


    voici la sortie de Maven P>

    mvn -dtest = test d'alternotificationSest estimé p> blockQuote> xxx pré>

    note strong>: Je peux exécuter d'autres tests, je ne peux tout simplement pas exécuter ce test. Si je fais le ALANTINTIFICATIONSESTESTTESTTESTTESTESTTESTESTESTESTESTESTESTESTESTES EXTENDRE JUNIT.FRAMEWORK.ESCASCASE CODE> La classe est prise en charge par Maven, mais il semble qu'il ne soit pas conduit par PowerMockRunner code>. p>

    Voici la sortie de celle-ci: p>


    xxx pré>

    à nouveau, ces tests fonctionnent parfaitement avec Eclipse. P>


    Mise à jour forte> J'ai trouvé un problème possible et une solution de contournement. J'ai des tests avec testng et Junit. Si je supprime le test de mon POM et migrez tous mes tests vers Junit, je suis capable d'exécuter mon test PowerMock avec MVN Test code>. Il semble donc qu'il y ait un problème avec Maven et le combo Junit / Testng. P>

    J'aimerais pouvoir courir les deux, mais si je ne trouve pas de façon, je vais y aller et répondre à mon propre question. Merci Guys & Gals P> P>


3 commentaires

Est le test (ne pas s'étendant junit.framework.tescale ) déclenché lorsque vous venez d'exécuter test MVN ?


Non, il n'est pas déclenché.


Ensuite, ne vous attendez pas même à ce que ce soit lorsque vous utilisez -dtest . Vous avez un autre problème (et il semble que vous ayez trouvé la source).


7 Réponses :


1
votes

La configuration PowerMock est conviviale pour moi et les pots semblent bien (en supposant que les dépendances transitives maven reçoivent les autres pots PowerMock - nous avons environ 6-7 après que notre ivy résolve les obtient)

Eclipse peut utiliser sa propre bibliothèque Junit "interne", ainsi que les différents comportements?

Le test est-il annoté avec org.junit. @ Test?


0 commentaires

2
votes

Je ne peux pas reproduire votre problème. Avec le contenu suivant de mon pom.xml: xxx

et la classe de test suivante (sauter les importations): xxx

exécutant Test MVN -Dtest = aptest fonctionne simplement bien et donnez-moi la sortie suivante: xxx

donc la question est la suivante: avez-vous une méthode annotée avec @Test dans ALANTINOTIFICATIONSESTESTESTESTESTEST ?


2 commentaires

Veuillez poster votre pom.xml alors. Comme je l'ai dit, je ne peux pas reproduire le comportement que vous décrivez. Et BTW, que respectez-vous lorsque vous exécutez un test MVN ?


Ont posté ce que vous avez demandé



-1
votes

Il y a eu un problème lors du mélange à la fois des tests de test et de junit. Migration de tous les tests vers Junit résolu mon problème. Merci gars.


0 commentaires

0
votes

Si vous regardez dans la source du plug-in Surefire, il fait des choses sournoises. S'il trouve des packages de test de test dans le chargeur de classes, il choisira d'exécuter un TestRunner TestRunner. Je n'ai encore vu aucun exemples de tests Junit et de test de Testng fonctionnant bien côte à côte.


1 commentaires

Cela est possible en utilisant deux exécutions.



2
votes

Je suis également apparu à ce sujet, mais ce n'est pas un problème PowerMock. Ma classe de test a été nommée xstaticestest.java.

Lorsque j'exécute "MVN Clean Test", ce test ne serait pas exécuté, il ne fonctionnait que lorsque j'ai spécifié le test à l'aide de "-Dtest = ..."

La documentation Surefire mentionne que, par défaut, seuls ces modèles sont recherchés: " /test*.java" - inclut tous ses sous-répertoires et tous les noms de fichiers Java commençant par "Test". " / test.java" - inclut tous ses sous-répertoires et tous les noms de fichiers Java qui se terminent par "Test". " * / * testcase.java" - inclut tous ses sous-répertoires et tous les noms de fichiers Java qui se terminent par "TestCase".

Modification donc le nom de classe en une qui se termine par l'une d'entre elles, fonctionnera lorsque "MVN Test" est appelé, sinon le plug-in Surefire doit être configuré avec le nom de la classe spécifiquement.


0 commentaires

12
votes

Je viens d'avoir cette erreur et j'ai travaillé à travers la solution. Mon fichier pom.xml avait la dépendance suivante:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-api-mockito</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-core</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-module-junit4</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>


1 commentaires

Cette solution a fonctionné pour moi. J'utilisais la version PowerMock 1.6.4 avec Mockito 1.9.5.



0
votes

J'ai eu le même problème et cela m'a fallu un certain temps pour comprendre. Ma configuration tirait dans une ancienne version de JBoss.JavAssist, qui empêchait curieusement le PowerMockRunner de travailler du tout.

On vaut la peine de noter que j'ai aussi un environnement juniit / test mixte. J'ai déjà essayé la solution d'ajout de plusieurs fournisseurs de Surefire et que cela ne fonctionnait pas non plus (à l'aide de Surefire 2.14.1). Après la mise à niveau vers Surefire 2.17, mes tests de junit et de test à la fois commencés à fonctionner sans avoir à déclarer des fournisseurs Surefire. P>

Voici ma section de plugin ... P>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.5</version>
        <scope>test</scope>
    </dependency>
    <!--
    PowerMock versions are compatible with specific Mockito versions.
    https://code.google.com/p/powermock/wiki/MockitoUsage13
     -->
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.5.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.5.4</version>
        <scope>test</scope>
    </dependency>
    <!-- without this PowerMock tests don't run in maven -->
    <dependency>
        <groupId>jboss</groupId>
        <artifactId>javassist</artifactId>
        <version>3.8.0.GA</version>
        <scope>test</scope>
    </dependency>


0 commentaires