Jacoco 覆盖率在 java 类中为 org/apache/log4j/Category 给出错误



我正在尝试使用Jacoco进行代码覆盖。我已经用ANT脚本编写了Jacoco配置。Jacoco在没有代码登录的情况下工作正常。 但是对于我的代码中添加的记录器(apache log4j(来说,这是错误的。

我试图通过在 ant 脚本中添加以下代码来排除日志<jacoco:coverage destfile="${result.exec.file}" excludes="org.apache.log4j.*">它仍然给了我同样的错误。

我得到以下异常:


15:35:16     [junit] Testcase: testUncoveredMethod took 0.009 sec
15:35:16     [junit]    Caused an ERROR
15:35:16     [junit] org/apache/log4j/Category
15:35:16     [junit] java.lang.NoClassDefFoundError: org/apache/log4j/Category
15:35:16     [junit]    at com.ant.sonar.jacoco.junit.code.coverage.JacacoCoverage.<clinit>(JacacoCoverage.java:6)
15:35:16     [junit]    at com.ant.sonar.jacoco.junit.code.coverage.JacacoCoverageTest.testUncoveredMethod(JacacoCoverageTest.java:23)
15:35:16     [junit] Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Category
15:35:16     [junit]    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
15:35:16     [junit]    at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
15:35:16     [junit]    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
15:35:16     [junit]    at java.lang.ClassLoader.loadClass(ClassLoader.java:352)

雅科科配置

<target name="test" depends="compile">
<jacoco:coverage destfile="${result.exec.file}" excludes="org.apache.log4j.*">
<junit showoutput="true" printsummary="on" enabletestlistenerevents="true" fork="true" haltonfailure="no" forkmode="once">
<classpath path="${result.classes.dir}"/>
<classpath path="${junit.jar.path}"/>
<classpath path="${hamcrest.jar.path}"/>
<classpath location="../../ant-junit-1.9.5.jar"/>
<formatter type="plain" usefile="false"/>
<test name="com.ant.sonar.jacoco.junit.code.coverage.JacacoCoverageTest"/>
</junit>
</jacoco:coverage>
<!-- Step 3: Create coverage report -->
<jacoco:report>
<!--
This task needs the collected execution data and ... 
-->
<executiondata>
<file file="${result.exec.file}"/>
</executiondata>
<!-- the class files and optional source files ... -->
<structure name="JaCoCo Ant Example">
<classfiles>
<fileset dir="${result.classes.dir}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${src.dir}"/>
</sourcefiles>
</structure>
<!-- to produce reports in different formats. -->
<html destdir="${result.report.dir}"/>
<csv destfile="${result.report.dir}/report.csv"/>
<xml destfile="${result.report.dir}/report.xml"/>
</jacoco:report>
</target>

我得到了这个问题的修复。需要在 junit 类路径中添加log4jjar

最新更新