Utiliser Maven Surefire, je ne peux pas faire une exécution de test parallèle à fourchette. C'est-à-dire que chacun de mes cas de test doit fonctionner dans une JVM Serapate, d'où le fourrage. De plus, je veux que mes cas de test fonctionnent en parallèle. La première partie fonctionne sans problème: je suis capable de gérer chaque cas de test dans son propre JVM. La deuxième partie, cependant, c'est toujours un défi pour moi. Je n'ai pas réussi à obtenir l'exécution du paralle des cas de test travaillant. Voici comment se ressemblait ma déclaration de plugin: J'ai essayé les méthodes et les classes, mais je n'ai vu aucune parallélisation.
My Junit version est de 4,7 comme indiqué par la Déclaration de Dependy: p> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>compile</scope>
</dependency>
8 Réponses :
Je pense que vous êtes censé utiliser < Code> ThreadCount Code> paramètre lors de l'utilisation du parallèle code>
mode:
Assurez-vous d'obtenir un message de journal quelque chose comme ça juste avant ce titre: p> Ce message indique que le parallèle Surefire Junit Fournisseur est actif. P> Si cela n'est pas présent, Surefire peut choisir une version différente de Junit que vous ne le pensez. Tout ce qui est en dessous de 4.7 ne fonctionnera pas. Exécutez la dépendance MVN: arborescence à vérifier quelles version sont présentes. P> Vous devez également passer à Surefire 2.6 car un certain nombre de bugs mineurs liés à une exécution parallèle ont été corrigés. Pour la même raison, vous devez utiliser le dernier junit. P> p>
Tu ne veux pas que la percorethreadcount est vrai? Sinon, avoir ThreadCount 1, signifie que vous courez en parallèle avec un seul fil, c'est-à-dire une série?
Non, vous voulez que les threads distribués sur chaque noyau disponible, pas tous les fils sur un noyau. Malheureusement, ils définissent la valeur par défaut sur PercorethreadCount = TRUE, exécutant toutes les threads sur un noyau.
Êtes-vous sûr que cela ne fonctionne pas? Vous ne pouvez pas gagner beaucoup plus vite si vos tests ne contiennent pas de nombreuses méthodes de test. Avec forkmode = toujours le meilleur que vous puissiez faire est d'exécuter toutes les méthodes de test dans une classe, en parallèle. P>
Le mode parallèle de Surefire est extrêmement buggy. Par exemple, voir http://jira.codehaus.org/browse/surefire-747 et http://jira.codehaus.org/browse/surefire-730 P >
Je n'ai pas réussi à obtenir un seul test fonctionnant en parallèle à la date (de ne pas mentionner le forking). P>
Essayez de changer votre ForkMode de toujours en "jamais". Il ne l'énonce pas dans leur documentation, mais vous ne pouvez pas avoir la fourchette plus parallèle à ce moment-là (nous avons trouvé cela après avoir creusé le code SURFIRE.) P>
Juste pour que vous sachiez, vous rencontrerez probablement des tests qui ne traitent pas de sécurité en sécurité grâce à de nombreuses bibliothèques de test / support (EasyMock, PowerMock, etc.) Invalidation de la capacité à paralliser vos tests. P>
J'ai eu le même problème, car j'avais l'aide de la version 2.7 Surefire, après la mise à niveau vers la version 2.12, elle a fonctionné avec la configuration suivante:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <parallel>classes</parallel> <forkMode>perthread</forkMode> <threadCount>4</threadCount> </configuration> </plugin>
Cette solution a un bug résolu dans Maven-Surefire-Plugin 2.13. Vérifiez ce fil pour plus d'informations: Stackoverflow.com/Questtions/11098073/...
n'est-ce pas parallèle définissant un attribut de test uniquement? selon ce: http://maven.apache.org/plugins/maven -SureFire-plugin / test-mojo.html # parallèle p>
Le Surefire 2.16 Correction de l'exécution parallèle concernant les tests Junit. P>