Facing issue with apache log4j logs in code while code coverage using Jacoco

151 views
Skip to first unread message

shruti...@gmail.com

unread,
Jun 26, 2020, 6:24:12 AM6/26/20
to JaCoCo and EclEmma Users
Hi Team,

I am using apache log4j in my code. Now I am trying to do the code coverage using jacoco.

jacoco working fine without logs in code but it is errored out for loggers added in my code. i am getting below exception –


14:05:38     [junit] 
14:05:38     [junit] Testcase: testValidateQwestCktIdVCID took 0.171 sec
14:05:38     [junit] 	Caused an ERROR
14:05:38     [junit] org/apache/log4j/Category
14:05:38     [junit] java.lang.NoClassDefFoundError: org/apache/log4j/Category
14:05:38     [junit] 	at com.qwest.eflow.eman.common.nwf.FOAValidationHandler.<clinit>(FOAValidationHandler.java:44)
14:05:38     [junit] 	at com.ant.sonar.jacoco.junit.code.coverage.JacacoCoverageTest.testValidateQwestCktIdVCID(JacacoCoverageTest.java:31)
14:05:38     [junit] Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Category
14:05:38     [junit] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
14:05:38     [junit] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
14:05:38     [junit] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
14:05:38     [junit] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
14:05:38     [junit] 
14:05:38     [junit] Testcase: testUncoveredMethod took 0.001 sec
14:05:38     [junit] 	Caused an ERROR
14:05:38     [junit] org/apache/log4j/Category
14:05:38     [junit] java.lang.NoClassDefFoundError: org/apache/log4j/Category
14:05:38     [junit] 	at com.ant.sonar.jacoco.junit.code.coverage.JacacoCoverage.<clinit>(JacacoCoverage.java:6)


I tried to exclude the logs by adding below code in my ant script as( <jacoco:coverage destfile="${result.exec.file}" excludes="org.apache.log4j.*"> )still it is giving me same error.


<!-- junit-coverage using jacoco -->
<!-- Step 1: Import JaCoCo Ant tasks -->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoant.jar.path}"/>
</taskdef>
<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>



Could anyone please help me out.I am using junit 4.11 jar , ant-junit-1.9.5.jar and jacocoant.jar

Reply all
Reply to author
Forward
0 new messages