junit intellij-idea maven-surefire-plugin

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