服务端代码覆盖率

1.单元测试覆盖率:

maven命令的方式:

1.生成jacoco.exec:

mvn org.jacoco:jacoco-maven-plugin:prepare-agent clean test -Dmaven.test.failure.ignore=true

2.生成index.html

cd 模块 java -jar jacoco-0.8.4/lib/jacococli.jar report target/jacoco.exec --classfiles target/classes --html target/site/jacoco/

添加maven依赖的方式:

在项目root目录 pom.xml中添加:

<plugin>

                <groupId>org.jacoco</groupId>

                <artifactId>jacoco-maven-plugin</artifactId>

                <version>0.8.5</version>

                <executions>

                    <execution>

                        <id>default-prepare-agent</id>

                        <goals>

                            <goal>prepare-agent</goal>

                        </goals>

                    </execution>

                    <execution>

                        <id>default-report</id>

                        <phase>test</phase>

                        <goals>

                            <goal>report</goal>

                        </goals>

                    </execution>

                    <execution>

                        <id>default-check</id>

                        <goals>

                            <goal>check</goal>

                        </goals>

                    </execution>

                </executions>

            </plugin>

运行 mvn test 即可在target/site/jacoco文件夹下生成报告。

如果想要跳过失败的测试用例,请使用 mvn test -Dmaven.test.failure.ignore=true.

2.增量覆盖率:

原理:

①先得到单元测试覆盖率;

②diff代码,指定工程根目录和需要处理的子模块及对比的版本.计算增量代码覆盖率,并标记修改覆盖率报告.

python main.py -d . -m xmpush-common-spring-boot-starter -o 80e8d5220f906f1242736dc77ac8ef10947ff0fc

3.黑盒测试覆盖率:

原理:on the fly模式.通过javaagent代理实现.

tomcat项目:

1.配置Tomcat

1.1 把解压获取到的jacoco下的lib\jacocoagent.jar 文件放到tomcat安装路径\lib 下

1.2 配置Tomcat  \bin\catalina.bat文件,添加如下

# -javaagent: 的后面跟jacoco的安装路径

# includes= 选项,选择你要覆盖率的服务,例如com.baidu.*

# port= 选项,选择你要打开的端口

# address= 选项,tomcat服务所在机器的ip地址(如果想在跟tomcat服务同一台机器上执行ant任务的话,需要改为127.0.0.1)

set JAVA_OPTS="-javaagent:%CATALINA_BASE%\lib\jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=127.0.0.1"

2.部署项目

打包你的java工程项目到Tomcat 下的 \webapps 目录下,并启动Tomcat.

3.启动项目

如果是springboot项目:

配置Vm

options:-javaagent:jacocoagent.jar=includes=*,output=tcpserver,port=8089,address=127.0.0.1

访问项目提供的API进行测试.

Ant 构建获取代码覆盖率:

在服务器上,新建 build.xml 如下

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

<project name="nelus" xmlns:jacoco="antlib:org.jacoco.ant">

    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">

        <classpath path="jacocoant.jar"/>

    </taskdef>

    <target name="dump">

        <!-- address和port和catalina.bat设置保持一致,destfile设置jacoco.exec保存地址 -->

        <jacoco:dump address="127.0.0.1" reset="true" port="8089" destfile="CodeCoverage\jacoco\jacoco.exec"/>

    </target>

    <target name="report">

        <jacoco:report>

            <executiondata>

                <file file="CodeCoverage\jacoco\jacoco.exec"/>

            </executiondata>

            <structure name="Example Project">

                <!-- 可以按软件功能模块设置多个group,方便在report中查看 -->

                <group name="SpringMVC">

                    <classfiles>

                        <!--.class文件路径,可以放在客户端-->

                        <fileset dir="/home/xumeng/workspace/nelus/target/classes"/>

                    </classfiles>

                    <sourcefiles encoding="utf-8">

                        <!--源代码路径,可以放在客户端-->

                        <fileset dir="/home/xumeng/workspace/nelus/src/main/java" />

                    </sourcefiles>

                </group>

            </structure>

            <!-- report文件保存地址 -->

            <html destdir="CodeCoverage\jacoco\report"/>

        </jacoco:report>

    </target>

</project>

ant dump生成jacoco.exec文件

ant report 生成report文件(如果通过Jenkins插件这步骤可免)

生成报告地址是build.xml 中配置的。

查看报告>http://127.0.0.1:8089


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。