Jacco代码覆盖受AspectJ编译时编织的影响

时间:2016-01-14 17:41:08

标签: maven code-coverage aspectj-maven-plugin jacoco-maven-plugin

我正在使用maven来构建我当前的项目。我有Jacoco用于代码覆盖,而AspectJ用于我的方面的编译时编织。

现在我面临的问题是aspectJ编织的代码会影响代码覆盖率。

当我们不编织代码时它是100%但是当我们使用aspectJ时它严重下降到1/4。有什么指针吗?

1 个答案:

答案 0 :(得分:0)

@A。迪马特奥, 我只想分享我所做的解决方法,我没有得到任何适当的解决方案来解决这个问题。所以基本上是jacoco所做的,它在测试阶段完成后计算编译类的覆盖范围,而aspectj编译器在编织阶段编译这些类。所以在编织之前,我只需要将我的编译类放到某个地方,这样我的项目就有两个类(编译和编织一个。)。所以我将它们放在一个单独的目录中,以便jacoco可以从pom.xml中的there.add计算覆盖率

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
  <executions>
  <execution>
    <phase>compile</phase>
        <configuration>
        <target>
         <copy todir="${project.build.directory}/classesForSonar">
         <fileset dir="${project.build.directory}/classes"
                                        includes="**/*" />
        </copy>
    </target>
 </configuration>
   <goals>
    <goal>run</goal>
        </goals>
    </execution>
    </executions>
</plugin>

它对我的工作,对于我如何实现编译时编织你可以看 implement compile time weaving with spring boot and aspectj

如果有人找到了更好的解决方案,请发布。总是赞赏。 :)