2016-05-24 19 views
4

如果我有一个项目,但是现在我有一个多模块项目,我能够使代码覆盖率正常工作。Maven构建中的代码覆盖率 - 由于缺少类目录而跳过JaCoCo执行

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

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

跳绳JaCoCo执行由于

我覆盖率报告文件jacoco-it.exec创建缺少类目录但它看起来像jacoco插件需要项目中的测试运行英寸

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

回答

3

我已经设法得到一个通过试验和错误的排序解决方法。

看起来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> 

这似乎让jacoco插件开心,我得到我的代码覆盖率,虽然看起来插件现在忽略我的排除列表。

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

我设法绕过jacoco插件不排除文件,只是不复制它们与资源插件,但我仍然不明白jacoco是如何工作的。