junit - Error de IntelliJ al ejecutar la prueba unitaria: no se pudo encontrar o cargar la clase principal ${surefireArgLine}
intellij-idea maven-surefire-plugin (5)
Recibo el siguiente error al ejecutar pruebas unitarias en IntelliJ: Error: No se pudo encontrar o cargar la clase principal $ {surefireArgLine}. Estoy usando maven y en pom.xml tengo:
<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>
...
¿Alguien tiene un problema similar? ¿Cómo establecer valor para surefireArgLine?
Descubrí que tengo que ejecutar mi caso de prueba de maven con mvn -Dtest = TestCircle test no directamente desde IDE.
Estaba buscando esto y encontró este proyecto "arreglarlo" en este thread
Básicamente, defina su nombre de var jacocoArgLine como propiedad de proyecto vacía. Luego, en la configuración segura, use @ {jacocoArgLine} en lugar del prefijo de dólar.
La actualización de pom.xml solucionó mi problema.
<argLine>${surefire.argLine}</argLine>
Información completa del plugin en 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> -->
Pude corregir este error en Netbeans cambiando la versión de plug-in surefire a 2.10 y eliminando
<argLine>-Xmx1024m -XX:MaxPermSize=256m ${argLine}</argLine>
desde la configuración de maven-surefire-plugin. En su lugar, he creado una propiedad argLine que se selecciona automáticamente por surefire.
<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>
Ahora, puedo ejecutar y depurar archivos individuales y métodos de prueba. Y la cobertura del código está funcionando como se esperaba.
Tuve el mismo problema y creo que encontré la solución en el rastreador de problemas de vertx .
En resumen, debe configurar la integración de su IntelliJ Maven (plugin surefire) para que se comporte de manera diferente.
Haga esto a través de: Preferences -> Build,Execution,Deployment -> Build Tools -> Maven -> Running Tests
Desmarque argLine
Esto me funciona en IntelliJ 14.1.6 con mvn 3.3.9