简体   繁体   中英

Jacoco code coverage

We are getting error: Code coverage error:

[jacoco:coverage] Enhancing java with coverage
     [java] Error: Could not find or load main class **\*.class
     [java] Java Result: 1
[jacoco:coverage] Enhancing junit with coverage
    [junit] Test **/*Test FAILED

We are using jacoco agent for code coverage report and using ant It is showing build is successful but jacoco.exec is of 1 kb only and getting errors while compiling also thats why we have comment out that in our build.xml and we are getting above error also.

My build.xml looks like:

<?xml version="1.0" encoding="UTF-8"?>

<!-- 
   Copyright (c) 2009, 2016 Mountainminds GmbH & Co. KG and Contributors
   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License v1.0
   which accompanies this distribution, and is available at
   http://www.eclipse.org/legal/epl-v10.html

   Contributors:
      Marc R. Hoffmann - initial API and implementation
-->

<project name="Example Ant Build with JaCoCo" xmlns:if="ant:if" xmlns:unless="ant:unless" default="rebuild" xmlns:jacoco="antlib:org.jacoco.ant">

    <description>
      Example Ant build file that demonstrates how a JaCoCo coverage report
      can be itegrated into an existing build in three simple steps.
    </description>
    <property file="code-coverage.properties"/>
    <property name="result.dir" location="${result.dir}" />
    <property name="src.dir" location="${src.home}" />
    <property name="result.classes.dir" location="${classes.dir}" />
    <property name="result.report.dir" location="${result.dir}/site/jacoco" />
    <property name="result.exec.file" location="${exec.path}/jacoco.exec" />

    <!-- Step 1: Import JaCoCo Ant tasks -->
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="${jacoco.home}/lib/jacocoant.jar" />
    </taskdef>
    <!--<target name="clean" description="Builds jacoco report.">
        <delete dir="${result.dir}" />
    </target>-->

    <!--<target name="compile">
        <mkdir dir="${result.classes.dir}" />
        <javac srcdir="${src.dir}" destdir="${result.classes.dir}" debug="true" includeantruntime="false" />
    </target> -->
    <path id="classpath.test">
        <pathelement location="${jacoco.home}/lib/junit4-4.8.2.jar" />
    </path>
     <target name="test">
        <!-- Step 2: Wrap test execution with the JaCoCo coverage task -->
        <jacoco:coverage destfile="${result.exec.file}">
            <java classname="**/*.class" fork="true">
              <classpath>
            <pathelement location="${result.classes.dir}"/>
        </classpath>

            </java>
        </jacoco:coverage>
        <!-- Step 2: Wrap test execution with the JaCoCo coverage task -->

        <jacoco:coverage>
            <junit fork="true" forkmode="once">
                <test name="**/*Test" filtertrace="true"/>
                <classpath path="${result.classes.dir}"/>
            </junit>
        </jacoco:coverage>
    </target>   

    <target name="report" depends="test">
        <!-- 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}">
                     <include name="**/*.java"/>
                    </fileset>
                </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>

    <target name="rebuild" depends="test,report" />
</project>

The <java classname="xxx"> section is telling JaCoCo to actually run your application. So needs to be the class that has your main method: not just **/*.class . It won't accept wildcards there.

See http://www.eclemma.org/jacoco/trunk/doc/ant.html for an example.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM