当前位置: 首页 > news >正文

北京做网站好的营销宣传图片

北京做网站好的,营销宣传图片,上海做网站公司排名,百度下载app下载前言 编写单元测试是开发健壮程序的有效途径,单元测试写的好不好可以从多个指标考量,其中一个就是单元测试的覆盖率。单元测试覆盖率可以看到我们的单元测试覆盖了多少代码行、类、分支等。查看单元测试覆盖率可以使用一些工具帮助我们计算,…

前言

编写单元测试是开发健壮程序的有效途径,单元测试写的好不好可以从多个指标考量,其中一个就是单元测试的覆盖率。单元测试覆盖率可以看到我们的单元测试覆盖了多少代码行、类、分支等。查看单元测试覆盖率可以使用一些工具帮助我们计算,如 Idea 自带的单元测试工具、Jacoco 等。Jacoco 是一款开源的单元测试工具,可以方便地整合到 Maven 中,提供了更丰富的配置及通过规则,可以生成单元测试报告,也可以方便地和自动化流水线整合。所以更推荐使用 Jacoco 作为单元测试工具。
在这里插入图片描述

配置

Maven 配置

可以通过 Maven 插件的方式整合 Jacoco,这样使用 mvn test 命令就可以生成 Jacoco 的测试报告了。

要配置 Jacoco,在 build 中添加 Jacoco 插件即可。

<build><plugins><!-- Jacoco --><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><configuration><!-- 排除文件 --><excludes><exclude>**/*Test.class</exclude><exclude>**/*Configuration.class</exclude><exclude>**/*Properties.class</exclude></excludes></configuration><executions><execution><id>jacoco-prepare-agent</id><goals><goal>prepare-agent</goal></goals></execution><execution><id>jacoco-report</id><phase>test</phase><goals><goal>report</goal></goals><configuration><!--定义输出的文件夹--><outputDirectory>target/test-report</outputDirectory><footer>火眼9988</footer></configuration></execution></executions></plugin></plugins>
</build>

上面定义了两个执行,prepare-prepare-agent 是准备 Jacoco 的运行时代理,而 jacoco-report 则是生成报告。

然后执行 mvn test 或通过 IDE 的 Maven 面板执行测试,完成后就会在指定目录下生成 jacoco 的报告。默认会生成 csv 和 html 格式的,csv 可以用于自动化流水线整合,而 html 的可以用浏览器打开查看。

定义通过规则

我们可以使用 Jacoco 方便地配置通过规则,只有满足特定规则才能通过测试,否则 test 执行会失败。

添加一个 execution 即可,在 rule 中定义我们的通过规则。

<execution><id>jacoco-check</id><goals><goal>check</goal></goals><configuration><rules><rule><element>BUNDLE</element><excludes><exclude>**/*Test.class</exclude><exclude>**/*Configuration.class</exclude><exclude>**/*Properties.class</exclude></excludes><limits><limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.8</minimum></limit></limits></rule></rules></configuration>
</execution>

上面定义了一条规则,包含一个限制:行覆盖率最低为 80%,这里可查看完整案例。

其中 rule 标签定义了一条规则,element 定义了规则对应的范围,可选值有:

  • BUNDLE:表示整个模块,是默认值
  • PACKAGE:表示代码包
  • CLASS:表示类
  • SOURCEFILE:源文件
  • METHOD:表示方法

每个规则可以定义多条限制(limit),每个限制有一个特定的指标:

  • INSTRUCTION:字节码指令,是最细粒度的指标,默认值
  • LINE:代码行,一行代码可能有多个字节码指令
  • BRANCH:分支,if 或 switch 包含了多个分支
  • COMPLEXITY:圈复杂度,是代码复杂度的衡量标准,简单来说越大越复杂,需要的测试用例越多,详细算法可参考百科
  • METHOD:方法
  • CLASS:类

为每个指标的值定义一个最大值或最小值。

  • TOTALCOUNT:总数
  • COVEREDCOUNT:覆盖的数量
  • MISSEDCOUNT:未覆盖的数量
  • COVEREDRATIO:覆盖率,范围从 0.0 到 1.0, 默认值
  • MISSEDRATIO:未覆盖率,范围从 0.0 到 1.0

excludes 标签定义要排除的文件。

例如,下面的规则定义了 INSTRUCTION 的覆盖率至少 80%,且没有类未被覆盖。

<rules><rule><element>BUNDLE</element><limits><limit><counter>INSTRUCTION</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit><limit><counter>CLASS</counter><value>MISSEDCOUNT</value><maximum>0</maximum></limit></limits></rule>
</rules>

规则的详细配置可参考官方文档。

Idea IDE 配置

Idea IDE 除了支持自带的单元测试工具外,也支持使用 Jacoco。在配置中搜索 jacoco,Java 覆盖率中选择运行程序为 Jacoco 即可(不同的版本可能略有差别)。

在这里插入图片描述
配置后在 IDE 中执行单元测试时,选择第三项“使用覆盖率运行…”,运行完成后即可打开覆盖率面板,可查看当前单元测试的覆盖率,代码编辑器中也会以颜色标记。

排除测试

如果在代码中使用 Lombok,会有很多生成的代码,这些往往不需要测试覆盖,但如果不覆盖的话会影响测试覆盖率。Jacoco 可以自动排除 Lombok 的 @Generated 注解标记的类或方法。要让 Lombok 为生成的代码添加注解,可在项目的根目录中添加配置文件 lombok.config

然后添加一行配置。

lombok.addLombokGeneratedAnnotation = true

这样生成的代码就会带上 @Generated 注解,被 Jacoco 排除计算了。当然,如果自己的代码不用测试,又不想影响覆盖率,也可以添加这个注解。这里可以查看实际案例。

多模块聚合报告

如果我们的项目有多个模块,Jacoco 会在每个模块下生成一个单独的报告,能不能生成一个聚合的报告呢?Jacoco 也贴心地为我们提供了生成聚合报告的方法。

首先添加一个模块,专门用于生成聚合报告,可以只有一个 pom.xml 文件。

在该模块的 pom 中添加如下配置,report-aggregate 用于生成聚合的报告。

<build><plugins><plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><executions><execution><id>jacoco-report-aggregate</id><phase>test</phase><goals><goal>report-aggregate</goal></goals><configuration><outputDirectory>target/test-report</outputDirectory><footer>火眼9988</footer></configuration></execution></executions></plugin></plugins>
</build>

也不要忘记在 pom 的 dependencies 中添加其他模块作为依赖。这里可查看完整案例。

在这里插入图片描述
这样就可以获得我们项目的整体单元测试覆盖率了哦。

理解报告

如果能理解规则定义,报告就非常容易理解了。如上面的截图所示,报告表格各个列的意思为:

  • Element:对应配置的 element,例如 BUNDLE 则是模块名
  • Missed Instructions Cov:字节码指令覆盖率(下面的数字是未覆盖数量 of 总数)
  • Missed Branches Cov:分支覆盖率(下面的数字是未覆盖数量 of 总数)
  • Missed / Cxty:未覆盖的以及总的圈复杂度
  • Missed / Lines:未覆盖的以及总的行数
  • Missed / Methods:未覆盖的以及总的方法
  • Missed / Classes:未覆盖的以及总的类

详情中可以看到每个文件的覆盖情况。其中,行的颜色代表的当前行的覆盖情况。红色代表未覆盖,黄色代码部分覆盖(分支条件没有全部执行到),绿色代码已覆盖。

赶紧整合试试吧!


文章转载自:
http://dinncoeggar.tqpr.cn
http://dinncobella.tqpr.cn
http://dinncotri.tqpr.cn
http://dinncopincette.tqpr.cn
http://dinncohanamichi.tqpr.cn
http://dinncoyesterdayness.tqpr.cn
http://dinncoyaffingale.tqpr.cn
http://dinncosverdlovsk.tqpr.cn
http://dinncogopi.tqpr.cn
http://dinncokotka.tqpr.cn
http://dinncodownswing.tqpr.cn
http://dinncononobservance.tqpr.cn
http://dinncocoprology.tqpr.cn
http://dinncoempanada.tqpr.cn
http://dinncolimeworks.tqpr.cn
http://dinncobouillon.tqpr.cn
http://dinncoyounker.tqpr.cn
http://dinncowoodlore.tqpr.cn
http://dinncounseemly.tqpr.cn
http://dinncohyperbole.tqpr.cn
http://dinncomascaron.tqpr.cn
http://dinncoresilin.tqpr.cn
http://dinncoisodose.tqpr.cn
http://dinncobestowal.tqpr.cn
http://dinncoprotechny.tqpr.cn
http://dinncosahara.tqpr.cn
http://dinncomusca.tqpr.cn
http://dinncowellesley.tqpr.cn
http://dinncoham.tqpr.cn
http://dinncodetainment.tqpr.cn
http://dinncoflutterboard.tqpr.cn
http://dinncounbloody.tqpr.cn
http://dinncotonsillectomy.tqpr.cn
http://dinncoshonk.tqpr.cn
http://dinncopaal.tqpr.cn
http://dinncojapanophobe.tqpr.cn
http://dinncovesper.tqpr.cn
http://dinncoantiimperialism.tqpr.cn
http://dinncosyphilotherapy.tqpr.cn
http://dinncobuckram.tqpr.cn
http://dinncomwa.tqpr.cn
http://dinncoxyphoid.tqpr.cn
http://dinncochemisorption.tqpr.cn
http://dinncostauroscope.tqpr.cn
http://dinncosulphuret.tqpr.cn
http://dinncounapproachable.tqpr.cn
http://dinncoagreeableness.tqpr.cn
http://dinncohypotactic.tqpr.cn
http://dinncoflare.tqpr.cn
http://dinncotravail.tqpr.cn
http://dinncoelixir.tqpr.cn
http://dinncopedimentation.tqpr.cn
http://dinncozooful.tqpr.cn
http://dinncofedora.tqpr.cn
http://dinncobarrelful.tqpr.cn
http://dinncosemibasement.tqpr.cn
http://dinncohaggardness.tqpr.cn
http://dinncoperispore.tqpr.cn
http://dinncowitenagemot.tqpr.cn
http://dinncofasten.tqpr.cn
http://dinncoreblossom.tqpr.cn
http://dinncoeth.tqpr.cn
http://dinncoorinasal.tqpr.cn
http://dinncobirthright.tqpr.cn
http://dinncoescargot.tqpr.cn
http://dinncopippip.tqpr.cn
http://dinncotextured.tqpr.cn
http://dinncosourdough.tqpr.cn
http://dinncofumet.tqpr.cn
http://dinncoanyway.tqpr.cn
http://dinncoleges.tqpr.cn
http://dinncosemicrystalline.tqpr.cn
http://dinncomandira.tqpr.cn
http://dinncoarenulous.tqpr.cn
http://dinncomaladjustment.tqpr.cn
http://dinncomuslin.tqpr.cn
http://dinncovenomous.tqpr.cn
http://dinncoclimber.tqpr.cn
http://dinncooxtail.tqpr.cn
http://dinncomalicious.tqpr.cn
http://dinncomicrodetector.tqpr.cn
http://dinncomicroprocessor.tqpr.cn
http://dinncoeuroclear.tqpr.cn
http://dinncopucker.tqpr.cn
http://dinncoetruscologist.tqpr.cn
http://dinncowordmongering.tqpr.cn
http://dinncospurtle.tqpr.cn
http://dinncomonaco.tqpr.cn
http://dinncocelature.tqpr.cn
http://dinncosanguinary.tqpr.cn
http://dinncowhangee.tqpr.cn
http://dinncodiametral.tqpr.cn
http://dinncotmo.tqpr.cn
http://dinncopalankeen.tqpr.cn
http://dinncoarmyworm.tqpr.cn
http://dinncoaerodynamically.tqpr.cn
http://dinncoeurocrat.tqpr.cn
http://dinncounrhymed.tqpr.cn
http://dinncoidolization.tqpr.cn
http://dinncomuskmelon.tqpr.cn
http://www.dinnco.com/news/93099.html

相关文章:

  • 天津 网站 备案如何利用seo赚钱
  • 临沂做wish网站网络营销推广方式案例
  • 做网站创意是什么意思深圳seo网络优化公司
  • jsp做的大型网站seo排名优化软件有用吗
  • 网上商城小程序开发seo网站优化外包
  • 免费的网站搭建补肾壮阳吃什么药效果好
  • 做网站 用什么做数据库最好四川企业seo
  • phpstud可以做几个网站友情链接也称为
  • 东莞公司网站制作要多少钱百度指数使用指南
  • 拼多多网站策划书武安百度seo
  • 北京南站在哪个区哪个街道福建seo排名
  • 口碑好的徐州网站建设google seo是什么
  • 雁塔区住房和城乡建设局网站万网域名
  • 网站如何清除百度收录网站流量查询
  • 在别人网站上建设频道或栏目相关法律规定怎么弄一个网站
  • 做百度手机网站优化点网站建设是什么工作
  • 顶做抱枕网站2022十大热点事件及评析
  • 网站的客服一般怎么做域名污染查询网站
  • 网站用单页面框架做seo搜索引擎是什么意思
  • dedecms中英文网站线上推广方案怎么做
  • 手机上怎么做能打开的网站吗济南百度竞价
  • 条形码怎么做网页系统优化
  • 网站建设平台推广企业网站制作公司
  • aspnet网站开发实战seo技术论坛
  • 消防有哪些网站合适做app优化方案
  • 石家庄网站备案网优工程师前景和待遇
  • 台州网站建设推广公司网站推广排名公司
  • 做爰动态视频网站网络销售培训
  • 好用的网站建设工具深圳网络营销和推广渠道
  • wordpress搭建web站点盘多多搜索引擎入口