在IntelliJ中运行单元测试时出现以下错误: 错误:无法找到或加载主类$ {surefireArgLine}。 我正在使用maven,在pom.xml中我有:
<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>
...
有没有人有类似的问题?如何为surefireArgLine设置值?
答案 0 :(得分:190)
我遇到了同样的问题,我想我在vertx-issue tracker找到了解决方案。
简而言之,您必须将IntelliJ Maven(surefire插件)集成配置为以不同的方式运行。
通过以下方式做到:
Preferences -> Build,Execution,Deployment -> Build Tools -> Maven -> Running Tests
取消选中argLine
这适用于IntelliJ 14.1.6和mvn 3.3.9
答案 1 :(得分:8)
我可以通过将surefire-plugin版本更改为2.10并删除
来修复Netbeans中的此错误<argLine>-Xmx1024m -XX:MaxPermSize=256m ${argLine}</argLine>
来自maven-surefire-plugin配置的。相反,我创建了一个属性argLine,由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>
现在,我可以运行和调试单个文件和测试方法。代码覆盖率正如预期的那样发挥作用。
答案 2 :(得分:1)
更新pom.xml解决了我的问题。
<argLine>${surefire.argLine}</argLine>
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> -->
答案 3 :(得分:0)
我发现我必须从maven运行我的测试用例 mvn -Dtest = TestCircle测试 不是直接来自IDE。
答案 4 :(得分:0)
正在寻找这个并找到了这个项目&#34;修复&#34;它在thread
中基本上将jacocoArgLine var名称定义为空项目属性。然后在surefire配置中使用@ {jacocoArgLine}而不是美元前缀。