web-dev-qa-db-fra.com

Erreur IntelliJ lors de l'exécution du test unitaire: impossible de trouver ou de charger la classe principale $ {surefireArgLine}

J'obtiens l'erreur suivante lors de l'exécution des tests unitaires dans IntelliJ: Erreur: impossible de trouver ou de charger la classe principale $ {surefireArgLine}. J'utilise maven et dans pom.xml j'ai:

<properties>
    ...
    <surefire.argLine />
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/Java</outputDirectory>
                        <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
             <!--Sets the VM argument line used when unit tests are run.-->
            <argLine>${surefire.argLine}</argLine>
        </configuration>
    </plugin>
  <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.1.201405082137</version>
            <executions>
                <!--
                    Prepares the property pointing to the JaCoCo runtime agent which
                    is passed as VM argument when Maven the Surefire plugin is executed.
                -->
                <execution>
                    <id>pre-unit-test</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <!--Sets the path to the file which contains the execution data.-->
                        <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
                        <!--
                            Sets the name of the property containing the settings
                            for JaCoCo runtime agent.
                        -->
                        <propertyName>surefireArgLine</propertyName>
                    </configuration>
                </execution>
   ...

Quelqu'un at-il eu un problème similaire? Comment définir la valeur de surefireArgLine?

58
BlueLettuce16

J'ai découvert que je dois exécuter mon cas de test depuis maven avec mvn -Dtest = TestCircle test pas directement depuis IDE.

0
BlueLettuce16

J'ai eu le même problème et je pense avoir trouvé la solution sur le tracker vertx-issue .

En bref, vous devez configurer votre intégration IntelliJ Maven (plugin surefire) pour qu'elle se comporte différemment.

Pour ce faire, via: Preferences -> Build,Execution,Deployment -> Build Tools -> Maven -> Running Tests

Décochez argLine

Cela fonctionne pour moi dans IntelliJ 14.1.6 avec mvn 3.3.9

195
jah

J'ai pu corriger cette erreur dans Netbeans en changeant la version du plugin surefire en 2.10 et en supprimant

<argLine>-Xmx1024m -XX:MaxPermSize=256m ${argLine}</argLine>

à partir de la configuration du plugin maven-surefire. Au lieu de cela, j'ai créé une propriété argLine qui est choisie automatiquement par infaillible.

<properties>
    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
  </properties>

<build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.10</version>
      </plugin>

Maintenant, je peux exécuter et déboguer des fichiers uniques et des méthodes de test. Et la couverture du code fonctionne comme prévu.

8
tak3shi

La mise à jour de pom.xml a résolu mon problème.

<argLine>${surefire.argLine}</argLine>

Informations complètes sur le plugin dans pom.xml

    <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>    
            <version>2.18.1</version>                 
            <configuration>
                <parallel>classes</parallel>
                <threadCount>10</threadCount>
                <workingDirectory>${project.build.directory}</workingDirectory>   
                <jvm>${env.JDK1_8_HOME}\bin\Java</jvm>   
                <argLine>${surefire.argLine}</argLine>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.Apache.maven.surefire</groupId>
                    <artifactId>surefire-junit4</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
     </plugin> --> 
1
nandeesh

Cherchait cela et a trouvé ce projet "fix" dans ce thread

Définissez fondamentalement votre nom var jacocoArgLine comme propriété de projet vide. Ensuite, dans la configuration infaillible, utilisez @ {jacocoArgLine} au lieu du préfixe dollar.

0
Jaime Casero