maven构建中的代码覆盖 - 由于缺少类目录而跳过JaCoCo执行

ber*_*olo 10 java code-coverage maven jacoco

如果我有一个项目但是现在我有一个多模块项目,我能够使代码覆盖正常工作.

我的应用程序是在api项目中构建的,我的所有集成测试都在一个单独的项目中运行,该项目使用前面模块构建的artefact.

构建运行,但我没有得到代码覆盖率报告,而是我收到信息消息:

由于缺少类目录而跳过JaCoCo执行

我的覆盖率报告文件jacoco-it.exec已创建,但似乎jacoco插件需要运行测试的项目中的类.

有人可以告诉我,当类在另一个模块中时,我需要做些什么才能创建覆盖率报告?

ber*_*olo 5

我设法通过反复试验得到了一种解决方法。

似乎jacoco插件很乐意在没有类的情况下创建exec文件,但在没有类的情况下不会创建报告,我不了解jacoco在内部的工作方式,因此如果有人知道,您可以解释一下吗?

我也不确定我所做的工作是否可靠,但是它似乎报告了我的硒驱动测试的覆盖范围。

我自己想出的(可能)解决方案是使用maven资源插件将在我的target \ cargo ..目录中的war文件中爆炸的类复制到target \ classes目录中:

 <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <executions>
          <execution>
            <id>copy-resources</id>             
            <phase>pre-integration-test</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/classes</outputDirectory>
              <resources>          
                <resource>
                  <directory>${basedir}/target/cargo/configurations/tomcat7x/webapps/calculator-api/WEB-INF/classes</directory>
                  <filtering>false</filtering>
                  <excludes>
                        <exclude>**/*Config*.*</exclude>
                        <exclude>**/*Initialiser*.*</exclude>
                  </excludes>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
    </plugin>
Run Code Online (Sandbox Code Playgroud)

尽管似乎该插件现在忽略了我的排除列表,但这似乎使jacoco插件感到满意,并且得到了我的代码覆盖。

有人知道这是否真的是一种解决方案,它“似乎”可以工作,但我无法在网上找到推荐的方法,而且我也不确定为什么jacoco代理设置上的排除选项似乎不再起作用。

我设法绕过了jacoco插件,但不通过不使用资源插件复制文件来排除文件,但我仍然不完全了解jacoco的工作方式。