Exception avec le plugin surefire avec phase de test dans maven

J'ai besoin d'utiliser infaillible v2.12, mais j'ai l'attaché trace de la pile à chaque fois que je lance cette version. Si je lance la v2.10 je n'ai pas l'erreur. J'ai besoin de cette version donc je peux annoter mes classes de test avec @Catégorie et de les étiqueter comme UnitTests ou IntegrationTests.
Voici ma commande: mvn test -Dsurefire.version=2.12 -X

 [ERREUR] Échec de l'exécution de l'objectif org.apache.maven.plugins:maven-surefire-plugin:2.12:test (par défaut-test) sur projet de PROJET: Exécution par défaut-test de l'objectif org.apache.maven.plugins:maven-surefire-plugin:2.12:échec du test: java.lang.de réfléchir.InvocationTargetException; nested exception java.lang.de réfléchir.InvocationTargetException: null: ExceptionInInitializerError Inattendue (ClassNotFoundException recherche de la classe org.apache.maven.cli.MavenCli' -> [Aide 1] 
org.apache.maven.cycle de vie.LifecycleExecutionException: Échec de l'exécution de l'objectif org.apache.maven.plugins:maven-surefire-plugin:2.12:test (par défaut-test) sur le projet de ASPEN: Exécution par défaut-test de l'objectif org.apache.maven.plugins:maven-surefire-plugin:2.12:échec du test: java.lang.de réfléchir.InvocationTargetException; nested exception java.lang.de réfléchir.InvocationTargetException: null 
au org.apache.maven.cycle de vie.interne.MojoExecutor.execute(MojoExecutor.java:225) 
au org.apache.maven.cycle de vie.interne.MojoExecutor.execute(MojoExecutor.java:153) 
au org.apache.maven.cycle de vie.interne.MojoExecutor.execute(MojoExecutor.java:145) 
au org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
au org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
au org.apache.maven.cycle de vie.interne.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
au org.apache.maven.cycle de vie.interne.LifecycleStarter.execute(LifecycleStarter.java:161) 
au org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
au org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
au org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
au org.apache.maven.cli.MavenCli.domaine(MavenCli.java:196) 
au org.apache.maven.cli.MavenCli.principale(MavenCli.java:141) 
au coucher du soleil.de réfléchir.NativeMethodAccessorImpl.invoke0(Native method) 
au coucher du soleil.de réfléchir.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
au coucher du soleil.de réfléchir.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
à java.lang.de réfléchir.La méthode.invoke(la Méthode.java:597) 
au org.codehaus.plexus.classworlds.lanceur.Lanceur.launchEnhanced(Lanceur.java:290) 
au org.codehaus.plexus.classworlds.lanceur.Lanceur.lancement du Lanceur.java:230) 
au org.codehaus.plexus.classworlds.lanceur.Lanceur.mainWithExitCode(Lanceur.java:409) 
au org.codehaus.plexus.classworlds.lanceur.Lanceur.principale(Lanceur.java:352) 
Causés par: org.apache.maven.plugin.PluginExecutionException: Exécution par défaut-test de l'objectif org.apache.maven.plugins:maven-surefire-plugin:2.12:échec du test: java.lang.de réfléchir.InvocationTargetException; nested exception java.lang.de réfléchir.InvocationTargetException: null 
au org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110) 
au org.apache.maven.cycle de vie.interne.MojoExecutor.execute(MojoExecutor.java:209) 
... 19 plus 
Causés par: org.apache.maven.surefire.util.SurefireReflectionException: java.lang.de réfléchir.InvocationTargetException; nested exception java.lang.de réfléchir.InvocationTargetException: null 
au org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:197) 
au org.apache.maven.surefire.util.ReflectionUtils.invokeGetter(ReflectionUtils.java:69) 
au org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.getSuites(ProviderFactory.java:148) 
au org.apache.maven.plugin.surefire.booterclient.ForkStarter.getSuitesIterator(ForkStarter.java:317) 
au org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:149) 
au org.apache.maven.plugin.surefire.booterclient.ForkStarter.exécuter(ForkStarter.java:118) 
au org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:199) 
au org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAllProviders(AbstractSurefireMojo.java:176) 
au org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:135) 
au org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:98) 
au org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
... De plus de 20 
Causés par: java.lang.de réfléchir.InvocationTargetException 
au coucher du soleil.de réfléchir.NativeMethodAccessorImpl.invoke0(Native method) 
au coucher du soleil.de réfléchir.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
au coucher du soleil.de réfléchir.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
à java.lang.de réfléchir.La méthode.invoke(la Méthode.java:597) 
au org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) 
30 de plus ... 
Causés par: java.lang.ExceptionInInitializerError 
... 2 plus 
à java.lang.Classe.forName0(Native method) 
à java.lang.Classe.forName(de la Classe.java:169) 
au org.junit.runner.Description.getTestClass(Description.java:207) 
au org.apache.maven.surefire.common.junit48.FilterFactory$GroupMatcherCategoryFilter.shouldRun(FilterFactory.java:207) 
au org.apache.maven.surefire.junitcore.JUnitCoreProvider.getSuitesAsList(JUnitCoreProvider.java:169) 
au org.apache.maven.surefire.junitcore.JUnitCoreProvider.getSuites(JUnitCoreProvider.java:102) 
... 35 plus 
Causés par: java.lang.RuntimeException: Inattendu ClassNotFoundException recherche de la classe org.apache.maven.cli.MavenCli' 
... 12 plus 
(les lignes supprimées ici) 

Mon pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>sample</artifactId>
<groupId>sample</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
</plugins>
</reporting>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>${surefire.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<configuration>
<groups>com.webapp.api.annotation.type.${group.include}</groups>
<excludedGroups>com.webapp.api.annotation.type.${group.exclude}</excludedGroups>
</configuration>
</plugin>
</plugins>
</build>
</project>

Aussi, j'ai été capable de le faire dans un autre projet que j'ai mis en place à partir de ferraille. Mais dans ce cas, comme vous pouvez le voir je suis en écrasant le plugin surefire version.

Des idées?

Grâce

  • La version de maven utilisez-vous?
  • Si vous avez des tests d'intégration maven-surefire-plugin est dans le mauvais sens. Pour le test d'intégration utiliser le maven-failsafe plugin à la place.
  • J'ai une aide de maven 3.0.4
  • J'ai à la fois des tests d'intégration et tests unitaires et je veux étiquettes à la fois. Le ${groupe.exclure} et ${groupe.inclure} respectivement de déterminer lequel des deux étiquettes sont utilisées pour qui. c'est à dire. -Dgroup.citons=UnitTest
  • Le mieux séparer de l'unité et de l'intégration test est d'utiliser les conventions de nommage (unité de test: Test.java, Test.java, TestCase.java; les tests d'intégration: IT.java, *IT.java ou *ITCase.java). Si vous utilisez les plugins (surefire pour les tests unitaires et de sécurité failsafe pour le test d'intégration) correct, vous n'avez pas besoin d'utiliser cette étrange construction par le groupe exclut etc. Ils sont séparés par le cycle de vie.
  • En outre, la posté pom ressemble à un extrait de votre pom pouvez-vous donner plus de détails?
  • Ouais je comprends que seraient les meilleures pratiques et l'intention est sans doute pour exécuter les différents tests dans les différents cycles de vie, mais je fais affaire avec le lourd héritage de code où je ne peux pas commencer à renommer les classes de test. Toutes les idées de comment faire ce travail serait appréciée?
  • en ce qui concerne le pom. Oui, vous avez raison. Je ne peux pas poster le reste de la pom, mais je vais vous dire qu'il hérite de certains parents pdm à partir de laquelle l'un d'eux junit 3.8.2 en tant que dépendance et la surefire version 2.10 à partir de laquelle j'ai remplacer la propriété à l'aide de -Dsurefire.version=2.12

InformationsquelleAutor bclarance | 2012-07-06