8
votes

Maven Surefire: Impossible d'exécuter des tests parallèles à la fourchette

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: xxx pré>

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>            


0 commentaires

8 Réponses :


7
votes

Je pense que vous êtes censé utiliser < Code> ThreadCount paramètre lors de l'utilisation du parallèle mode: xxx


0 commentaires

2
votes

Assurez-vous d'obtenir un message de journal quelque chose comme ça xxx

juste avant ce titre: xxx

Ce message indique que le parallèle Surefire Junit Fournisseur est actif.

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.

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.


2 commentaires

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.



0
votes

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


0 commentaires

1
votes

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

Je n'ai pas réussi à obtenir un seul test fonctionnant en parallèle à la date (de ne pas mentionner le forking).


0 commentaires

1
votes

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

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.


0 commentaires

4
votes

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>


1 commentaires

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



0
votes

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


0 commentaires

0
votes

Le Surefire 2.16 Correction de l'exécution parallèle concernant les tests Junit.


0 commentaires