fork – 使用Powermock进行Emma覆盖

我们在项目中配置了emma,用于生成覆盖率报告.整个设置工作正常,直到我引入PowerMock来模拟一些静态方法.

当我用@RunWith(PowerMockRunner.class)注释一个类时,emma尝试再次启动覆盖进程并抛出addressbind异常.我认为maven surefire正在为不同的跑步者分配一个新的JVM,并且emma尝试在新的JVM上再次启动.

我尝试了针对surefire forkMode的不同选项,但没有帮助.

    运行util.HttpClientFactoryTest
    测试运行:1,失败:0,错误:0,跳过:0,经过的时间:0.154秒
    运行xxx.util.ServiceConnectorUtilTest
    EMMA:收集运行时覆盖数据……
    java.net.BindException:已在使用的地址:JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    在java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)

关于如何解决这个问题的想法?任何帮助都很有意义.谢谢

最佳答案 如果你没有指定emma插件的版本,使用maven将默认为

<groupId>org.sonatype.maven.plugin</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0</version>

如果在build标记中指定最新版本1.2(或1.1)

<build>
  <pluginManagement>
      <plugins>
          <plugin>
              <groupId>org.sonatype.maven.plugin</groupId>
              <artifactId>emma-maven-plugin</artifactId>
              <version>1.0</version>
          </plugin>
      </plugins>
  </pluginManagement>...

问题应该消失

点赞