【Maven】单元测试、统计、覆盖率相关插件使用介绍

2023-11-16

maven-surefire-plugin

  • maven-surefire-pluginmaven执行单元测试的插件,不显性配置也可以直接使用。
  • 这个插件的surefire:test命令会默认绑定maven执行的test阶段。
  • 执行结束后,默认在target/surefire-reports目录下会生成txtxml两种格式的结果,不利于直观展示,需要结合其它插件一起使用。

如果你自己声明了,那么可以指定自己的版本,并且可以配置自定义的参数。

配置示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!-- 是否忽略单元测试 -->
        <skipTests>false</skipTests>
        <!-- 是否忽略执行执行的单元测试 -->
        <testFailureIgnore>true</testFailureIgnore>
        <argLine>${argLine}</argLine>
    </configuration>
</plugin>
  • argLine参数说明
  • jacoco:report-aggregate聚合报告后,覆盖率显示为0,与这个参数有关
  • jacoco在prepare-agent阶段会生成一个属性指向jacoco的runtime agent,默认这个属性叫argLine
  • 需要在maven-surefire-plugin的配置中,引用这个属性

maven-surefire-report-plugin

为单元测试生成html报告,默认位置target/site/surefire-report.html

配置示例

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-report-plugin</artifactId>
    <version>${maven-surefire-report-plugin.version}</version>
    <executions>
        <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

执行mvn test时,会生成报告

效果预览

在这里插入图片描述

jacoco-maven-plugin

用于生成代码覆盖率报告,可以帮助我们了解代码中哪些部分已经被测试覆盖,哪些部分需要更多的测试,默认位置target/site/jacoco/index.html

配置示例

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <!-- 需要修改maven-surefire-plugin插件的<argLine>配置,默认是argLine -->
                <propertyName>argLine</propertyName>
            </configuration>
        </execution>
        <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!--是否使用追加的模式,如果为false,新的报告会替换旧的报告-->
        <append>false</append>
        <!-- rules里面指定覆盖规则 -->
        <rules>
            <rule implementation="org.jacoco.maven.RuleConfiguration">
                <element>BUNDLE</element>
                <limits>
                    <!-- 指定方法覆盖到80% -->
                    <limit implementation="org.jacoco.report.check.Limit">
                        <counter>METHOD</counter>
                        <value>COVEREDRATIO</value>
                        <minimum>0.80</minimum>
                    </limit>
                    <!-- 指定指令覆盖到80% -->
                    <limit implementation="org.jacoco.report.check.Limit">
                        <counter>INSTRUCTION</counter>
                        <value>COVEREDRATIO</value>
                        <minimum>0.80</minimum>
                    </limit>
                    <!-- 指定行覆盖到80% -->
                    <limit implementation="org.jacoco.report.check.Limit">
                        <counter>LINE</counter>
                        <value>COVEREDRATIO</value>
                        <minimum>0.80</minimum>
                    </limit>
                    <!-- 指定类覆盖到100%,不能遗失任何类 -->
                    <limit implementation="org.jacoco.report.check.Limit">
                        <counter>CLASS</counter>
                        <value>MISSEDCOUNT</value>
                        <maximum>0</maximum>
                    </limit>
                </limits>
            </rule>
        </rules>
    </configuration>
</plugin>

效果展示

在这里插入图片描述

如果覆盖率显示为0,需要修改maven-surefire-plugin插件的配置

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Maven】单元测试、统计、覆盖率相关插件使用介绍 的相关文章

随机推荐

  • python怎么一次输入两个数_python如何一次性输入多个数

    python一次性输入多个数的方法 1 输入两个数字 m n map int input split 2 输入三个及三个以上数字 a b c d map int input split python一次性输入多个数的方法 1 输入一个数字直
  • 在NLP上,CNN、RNN、MLP三者相比各有何优劣

    本文为知乎温颖就如下问题的回答 已授权CSDN转载 若想要实现某个具体的任务 如做关系抽取 实体识别 情感分类等 在不考虑实现的难度的情况下 如何从理论 经验 直觉上去选择最有希望的模型 前段时间做过用不同的神经网络模型做文本分类 情感分析
  • Linux(vi基本用法)

    在Linux下 可以键入vimtutor命令 有一个包含实操的vim教程 1 VI的三种命令模式 1 Command 命令 模式 用于输入命令 2 Insert 插入 模式 用于插入文本 3 Visual 可视 模式 用于视化的的高亮并选定
  • 报错:flask: TypeError: ‘function‘ object is not iterable

    错误 TypeError function object is not iterable Type错误 表示 函数 对象不是可迭代的 这是我在学习flask时在html模板中 进行for循环遍历闪现消息时缺少 导致遍历对象为一个函数 报错代
  • tomcat虚拟目录和虚拟主机等相关配置

    一 WEB 服务器 1 什么是WEB 服务器 就是一台电脑 安装了一个服务器软件 2 为什么需要安装 WEB 服务器 思考问题 从一台计算机的 IE 浏览器如何去访问另一台计算机中的文件 2 1 两台计算机是如何实现通讯的 IP地址 计算机
  • mesa 教程

    只有这个是靠谱的 Compiling and Installing The Mesa 3D Graphics Library latest documentation
  • yolov4训练自己的数据模型

    看了下yolov4的作者给的操作说明 链接如下 https github com AlexeyAB darknet how to compile on linux using make 有兴趣的可以去看看 总结起来 跟yolov3的操作方式
  • SpringCloud 商城系统搭建之Hystrix(基于Feign)

    前提 1 Feign在整合到Spring Cloud时已经自带了hystrix模块 所以pom xml中不需要额外引入feign依赖 2 本文是基于SpringCloud 商城系统搭建之eureka 一 基于Feign使用熔断器 按照下面步
  • H.264概述

    我的百科 我的贡献 草稿箱 百度首页 登录 新闻 网页 贴吧 知道 MP3 图片 视频 百科 帮助设置 添加到搜藏 返回百度百科首页 编辑词条 H 264
  • STM32控制L298n(从零开始)

    一 L298N模块简介 L298N是一款驱动模块 单片机通过向IN1 IN2 IN3 IN4输入PWM波从而控制OUT1 OUT2 ENA与ENB为使能引脚 使能引脚两根排针一定要短接 12v为模块供电 5v为单片机供电 二 L298N的逻
  • 什么是CentOS

    什么是CentOS CentOS是Community ENTerprise Operating System的简称 我们有很多人叫它社区企业操作系统 不管你怎么叫它 它都是linux的一个发行版本 CentOS并不是全新的linux发行版
  • MySQL密码忘记了怎么办?

    MySQL密码忘记了怎么办 本文就介绍了如何用canvas案例画出哆啦A梦的基础内容 提示 以下是本篇文章正文内容 下面案例可供参考 一 1 打开cmd命令符 先关闭正在运行的数据库 输入如下命令 二 打开mysql exe和mysqld
  • VUE的核心特性:响应式

  • 【Pytorch Lighting】第 6 章:深度生成模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • openEuler和linux什么关系,华为openEuler和鸿蒙(HarmonyOS)不是同一个操作系统

    华为推出了新操作系统 定名为openEuler 当前已提供20 03版本下载 有人不解的问 它跟鸿蒙 HarmonyOS 是不是同一个操作系统 或者有什么关系 华为openEuler和鸿蒙 HarmonyOS 100 不是同一个操作系统 并
  • string类型数组java_Java string类和数组的相关函数总结

    一 string类 1 字符串查找 1 str indexOf substr 返回substr首次在str里出现的索引 str 任意字符串对象 substr 要搜索的字符串 2 str lastIndexOf substr 返回substr
  • 洛谷P1011 [NOIP1998 提高组] 车站题解

    斐波那契数列 题目描述 火车从始发站 称为第1站 开出 在始发站上车的人数为a 然后到达第2站 在第2站有人上 下车 但上 下车的人数相同 因此在第2站开出时 即在到达第3站之前 车上的人数保持为a人 从第3站起 包括第3站 上 下车的人数
  • 拒绝摆烂!C语言练习打卡第四天

    博客主页 小王又困了 系列专栏 每日一练 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 选择题 1 第一题 2 第二题 3 第三题 二 编程题 1 第一题 2 第二题 前言 在前面我们学习完C语言的所以知识 当然练习巩固也不能
  • 万维网(www)

    万维网 www 是互联网中使用最广泛的一种应用 是一个超大规模线上信息储藏所 以链接的形式为用户提供信息检索服务 万维网的核心作用 使得信息在网上自由传输 万维网提供分布式的信息检索服务 箭头代表以链接的形式跳转到其他页面 这种方式使得一个
  • 【Maven】单元测试、统计、覆盖率相关插件使用介绍

    maven surefire plugin maven surefire plugin是maven执行单元测试的插件 不显性配置也可以直接使用 这个插件的surefire test命令会默认绑定maven执行的test阶段 执行结束后 默认