当前位置: 首页 > news >正文 wordpress 2017 主题广州seo公司排行 news 2025/10/30 5:09:18 wordpress 2017 主题,广州seo公司排行,布吉最新消息今天,公众号购买前言 单元测试是日常编写代码中常用的#xff0c;用于测试业务逻辑的一种方式#xff0c;单元测试的覆盖率可以用来衡量我们的业务代码经过测试覆盖的比例。 目前市场上开源的单元测试覆盖率的java插件#xff0c;主要有Emma#xff0c;Cobertura#xff0c;Jacoco。具体…前言 单元测试是日常编写代码中常用的用于测试业务逻辑的一种方式单元测试的覆盖率可以用来衡量我们的业务代码经过测试覆盖的比例。 目前市场上开源的单元测试覆盖率的java插件主要有EmmaCoberturaJacoco。具体对比如下 工具JacocoEmmaCobertura原理使用 ASM 修改字节码修改 jar 文件class 文件字节码文件基于 jcoverage,基于 asm 框架对 class 文件插桩覆盖粒度行类方法指令分支行类方法基本块指令无分支覆盖项目包类方法的语句覆盖/分支覆盖插桩on the fly、offlineon the fly、offlineoffline把统计代码插入编译好的class文件中生成结果在 Tomcat 的 catalina.sh 配置 javaangent 参数指出需要收集覆盖率的文件shutdown 时才收集只能使用 kill 命令关闭 Tomcat不要使用 kill -9html、xml、txt二进制格式报表htmlxml缺点需要源代码1、需要 debug 版本并打来 build.xml 中的 debug 编译项 2、需要源代码且必须与插桩的代码完全一致1、不能捕获测试用例中未考虑的异常 2、关闭服务器才能输出覆盖率信息已有修改源代码的解决方案定时输出结果输出结果之前设置了 hook会与某些服务器的 hook 冲突web 测试中需要将 cobertura.ser 文件来回 copy性能快小巧插入的字节码信息更多执行方式mavenant命令行命令行mavenantjenkins集成生成 html 报告直接与 hudson 集成展示报告无趋势图无法与 hudson 集成有集成的插件美观的报告有趋势图报告实时性默认关闭可以动态从jvm dump出数据可以不关闭服务器默认是关闭服务器时才写结果维护状态持续更新停止维护停止维护 其实上面的对比意义不大只看最后一条即可只有jacoco还在持续更新所以我们肯定首选jacoco。 maven工程使用jacoco配置 在jacoco官网上就有关于maven插件配置的示例包含单模块单元测试覆盖率报告和统计多模块单元测试覆盖率报告的配置。这里我也分单模块和多模块进行配置说明。 顺便说明在官网提供的单模块配置中需要使用两个命令才能生成测试覆盖率报告 $ mvn clean test # 生成jacoco.exec文件这里记录了测试执行的情况 $ mvn jacoco:report # 从jacoco.exec文件中解析并生成html测试报告单模块工程覆盖率报告生成 在pom.xml文件中添加如下插件配置 plugingroupIdorg.jacoco/groupIdartifactIdjacoco-maven-plugin/artifactIdversion0.8.7/versionexecutionsexecutioniddefault-prepare-agent/idgoalsgoalprepare-agent/goal/goals/executionexecutioniddefault-report/idphasetest/phasegoalsgoalreport/goal/goals/execution/executions /plugin这里相比官网我添加了如下配置 phasetest/phase这个配置可以让我们在执行mvn test的时候直接生成测试报告不用单独执行mvn jacoco:report。 另外我移除了如下配置 executioniddefault-check/idgoalsgoalcheck/goal/goalsconfigurationrulesruleelementBUNDLE/elementlimitslimitcounterCOMPLEXITY/countervalueCOVEREDRATIO/valueminimum0.60/minimum/limit/limits/rule/rules/configuration /execution这一段主要是用于检查测试覆盖率是否达到要求的配置我们很少在这个阶段进行覆盖率检查所以可以去掉这段配置为pom.xml瘦身当然如果有需要可以加上并且使用如下命令检查 $ mvn jacoco:check完成上述配置后使用如下命令即可生成测试报告测试报告在target/site/jacoco中 $ mvn test多模块工程覆盖率报告生成 在多模块的工程中测试执行的数据文件jacoco.exec和报告通常分散在不同的模块中看聚合结果非常不便因此我们通常会考虑将报告聚合起来看结果。 聚合报告的方式有两种一种是使用jacoco的maven插件提供的聚合功能这种方式在配置上比较麻烦但是配置完成后可以不依赖外部应用直接查看结果。 另一种方式是使用外部工具如sonar自动聚合报告这种方式配置简单但是需要以来外部应用。 使用sonar聚合报告的配置 使用sonar聚合报告的配置只需要直接在工程的root模块中配置如下插件 buildpluginsplugingroupIdorg.jacoco/groupIdartifactIdjacoco-maven-plugin/artifactIdversion0.8.7/versionexecutionsexecutioniddefault-prepare-agent/idgoalsgoalprepare-agent/goal/goals/executionexecutioniddefault-report/idgoalsgoalreport/goal/goalsphasetest/phase/execution/executions/plugin/plugins /build然后再在root工程的根目录下配置sonar的扫描配置文件sonar-project.properties即可: sonar.projectKey${projectKey} sonar.projectName${projectName} sonar.projectVersion${projectVersion} sonar.languagejava sonar.modules${module1},${module2} sonar.sourcessrc/main/java sonar.java.binariestarget/classes sonar.sourceEncodingUTF-8 sonar.coverage.jacoco.xmlReportPaths..这里对属性作简单说明 ${projectKey}是工程在sonar中的ID${prjectName}是工程在sonar中的名字${projectVersion}是工程在sonar中的版本通常来说可以自行定义不过建议跟应用保持一致如1.0${module1},${module2}是工程模块即模块在根目录的相对路径笔者这里没有验证是相对目录还是模块名称因为在我这里这两个是一致的通常也建议保持一致猜测是相对路径因为sonar并没有分析pom.xml文件实际上无法知道你的模块路径多个模块用英文逗号分隔 我们特别注意sonar.coverage.jacoco.xmlReportPaths这个属性的配置值是..表示上一层目录。这是因为sonar-scanner在扫描报告时会在执行路径生成.scannerwork文件夹并以此文件夹为workdir而我们需要扫描的目录是根目录因此需要使用..回到根目录。 这点可以在sonar-scanner的扫描日志中看到 INFO: Base dir: ~/workspace/griffin INFO: Working dir: ~/workspace/griffin/.scannerwork我的执行目录是~/workspace/griffin因此basedir是~/workspace/griffin而working dir是~/workspace/griffin/.scannerwork。 完成上述配置之后我们就可以通过如下命令将报告扫描并上传到sonar了 $ mvn clean test $ sonar-scanner -Dsonar.host.url${sonarUrl} -Dsonar.login${sonarUsername} -Dsonar.password${sonarPassword}这个过程发生了什么 先通过maven运行单元测试并在每个模块生成jacoco.exec执行数据文件通过jacoco.exec数据文件在每个模块的target/site/jacoco生成xml报告(还有html等其他格式的报告)sonar-scanner扫描根目录下所有xml报告并上传到sonar服务sonar服务整合计算报告并生成结果 最终我们可以在sonar中看到如下报告 使用jacoco聚合报告的配置 使用jacoco的聚合报告配置配置稍微复杂一些需要使用maven的ant插件我们可以在root工程的根目录下创建一个jacoco.xml文件它本质是一个pom文件 内容如下 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.jacoco/groupIdartifactIdjacoco-coverage-aggregate/artifactIdversion1.0.0-SNAPSHOT/versionbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-antrun-plugin/artifactIdversion3.0.0/versionexecutionsexecutionphasepost-integration-test/phasegoalsgoalrun/goal/goalsconfigurationtargetecho messageGenerating JaCoCo Reports /taskdef namereport classnameorg.jacoco.ant.ReportTaskclasspath path${basedir}/target/jacoco-jars/org.jacoco.ant.jar //taskdefmkdir dir${basedir}/target/coverage-report /reportexecutiondatafileset dir${basedir}/${module1}/targetinclude namejacoco.exec //filesetfileset dir${basedir}/${module2}/targetinclude namejacoco.exec //filesetfileset dir${basedir}/${module3}/targetinclude namejacoco.exec //fileset/executiondatastructure namejacoco-multi Coverage Projectgroup namejacoco-multiclassfilesfileset dir${basedir}/${module1}/target/classes /fileset dir${basedir}/${module2}/target/classes /fileset dir${basedir}/${module3}/target/classes //classfilessourcefiles encodingUTF-8fileset dir${basedir}/${module1}/src/fileset dir${basedir}/${module2}/src/fileset dir${basedir}/${module3}/src//sourcefiles/group/structurehtml destdir${basedir}/target/coverage-report/html /xml destfile${basedir}/target/coverage-report/coverage-report.xml /csv destfile${basedir}/target/coverage-report/coverage-report.csv //report/target/configuration/execution/executionsdependenciesdependencygroupIdorg.jacoco/groupIdartifactIdorg.jacoco.ant/artifactIdversion0.8.7/version/dependency/dependencies/plugin/plugins/build /project在这个配置中我有三个模块因此在配置文件中有${module1}, ${module2}, ${module3}三个占位符分别代表三个模块的目录名实际使用的时候需要改成真正的值另外对于pom文件groupIdartifactId和version是必须的元素在这里其实随便起名即可示例中给了一个勉强通用的配置当然建议改成和工程相当的值。 完成上述配置后使用如下两个命令即可生成合并的测试报告 $ mvn clean test $ mvn clean verify -f jacoco.xml最终可以在{project.basedir}/target/coverage-report目录下看到聚合的报告结果包含html和xml 这个过程发生了什么 先通过maven运行单元测试并在每个模块生成jacoco.exec执行数据文件使用maven指定jacoco.xml文件作为pom文件利用ant插件聚合单元测试覆盖率报告ant插件通过executiondata标签的配置搜集jacoco的数据文件ant插件通过structure标签的配置读取项目源码和字节码org.jacoco.ant.ReportTask类通过ant插件加载的执行数据和源码计算覆盖率生成报告 如果这时候希望聚合上报结果到sonar则需要将sonar-project.properties中的报告路径配置为聚合报告的结果 sonar.coverage.jacoco.xmlReportPaths../target/coverage-report/coverage-report.xml 文章转载自: http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.mdxwz.cn.gov.cn.mdxwz.cn http://www.morning.rwzc.cn.gov.cn.rwzc.cn http://www.morning.lonlie.com.gov.cn.lonlie.com http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.xptkl.cn.gov.cn.xptkl.cn http://www.morning.smdiaosu.com.gov.cn.smdiaosu.com http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.brlcj.cn.gov.cn.brlcj.cn http://www.morning.cnqwn.cn.gov.cn.cnqwn.cn http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn http://www.morning.fwkq.cn.gov.cn.fwkq.cn http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn http://www.morning.fydsr.cn.gov.cn.fydsr.cn http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn http://www.morning.qxlyf.cn.gov.cn.qxlyf.cn http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.tthmg.cn.gov.cn.tthmg.cn http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn http://www.morning.czrcf.cn.gov.cn.czrcf.cn http://www.morning.lthpr.cn.gov.cn.lthpr.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.dlbpn.cn.gov.cn.dlbpn.cn http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn http://www.morning.qrzqd.cn.gov.cn.qrzqd.cn http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn http://www.morning.pdwny.cn.gov.cn.pdwny.cn http://www.morning.crqpl.cn.gov.cn.crqpl.cn http://www.morning.zmbzl.cn.gov.cn.zmbzl.cn http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn http://www.morning.wklhn.cn.gov.cn.wklhn.cn http://www.morning.yhwxn.cn.gov.cn.yhwxn.cn http://www.morning.taipinghl.cn.gov.cn.taipinghl.cn http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn http://www.morning.fnkcg.cn.gov.cn.fnkcg.cn http://www.morning.kstlm.cn.gov.cn.kstlm.cn http://www.morning.hknk.cn.gov.cn.hknk.cn http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn http://www.morning.mnkz.cn.gov.cn.mnkz.cn http://www.morning.tktyh.cn.gov.cn.tktyh.cn http://www.morning.jbztm.cn.gov.cn.jbztm.cn http://www.morning.ckctj.cn.gov.cn.ckctj.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn http://www.morning.mkpkz.cn.gov.cn.mkpkz.cn http://www.morning.mgzjz.cn.gov.cn.mgzjz.cn http://www.morning.snbry.cn.gov.cn.snbry.cn http://www.morning.jnvivi.com.gov.cn.jnvivi.com http://www.morning.ykqbs.cn.gov.cn.ykqbs.cn http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn http://www.morning.dnzyx.cn.gov.cn.dnzyx.cn http://www.morning.pttrs.cn.gov.cn.pttrs.cn http://www.morning.mxptg.cn.gov.cn.mxptg.cn http://www.morning.kpnpd.cn.gov.cn.kpnpd.cn http://www.morning.wrtw.cn.gov.cn.wrtw.cn http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.smygl.cn.gov.cn.smygl.cn http://www.morning.nrchx.cn.gov.cn.nrchx.cn http://www.morning.chjnb.cn.gov.cn.chjnb.cn http://www.morning.yrdkl.cn.gov.cn.yrdkl.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.aa1585.com.gov.cn.aa1585.com http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn http://www.morning.gcspr.cn.gov.cn.gcspr.cn http://www.morning.qsy38.cn.gov.cn.qsy38.cn http://www.morning.pfbx.cn.gov.cn.pfbx.cn http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn http://www.morning.zsleyuan.cn.gov.cn.zsleyuan.cn http://www.morning.rnkq.cn.gov.cn.rnkq.cn http://www.morning.jcrlx.cn.gov.cn.jcrlx.cn http://www.morning.nbhft.cn.gov.cn.nbhft.cn http://www.morning.kpnpd.cn.gov.cn.kpnpd.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.ldqzz.cn.gov.cn.ldqzz.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.zrjzc.cn.gov.cn.zrjzc.cn http://www.morning.jsrnf.cn.gov.cn.jsrnf.cn 查看全文 http://www.tj-hxxt.cn/news/258413.html 相关文章: 网站如何做京东联盟网站制作方案书 intitle 律师网站建设的重要性临淄信息港最新招聘 网站后台管理界面html网站建设具体项目及价格 小语种网站网站知识介绍 摄影网站大全广东省住房及建设厅官方网站 红河做网站的公司医疗网站建设基本流程 闽清县城乡建设局网站移动网站开发书籍 商城网站建设设计介绍万能短视频素材库 网站目录扫描陕西个人证书查询网 济南行业网站开发网页制作基础教程免费 山西建设局网站汕头免费网站制作 深圳傻瓜式网站建设公司好吗做网站前端用什么技术好 站点推广名词解释html做的网站怎么弄 建设旅游网站数据库设计怎么做网站教程html文本文档 全屏网站大小seo网站外链专发 网站建设公司地址在哪华为网站的建设建议书 商城网站制作的教程用wordpress建的大部 画图标网站wordpress 视频 播放器插件 广州黄埔网站建设网站演示网站代码 网站建设的通知网站维护分工网站服务器排名 个人网站搭建步骤网站建设方案及 广东官网网站建设企业设计建设网站公司哪家好 怎么才能把网站优化做好网站建设的客户需求分析调研表 北京做网站要多少钱iis 做网站 sem可以为网站建设做什么营销型建设网站实训总结 汕头市企业网站建设品牌好的移动端网站模板下载 济宁网站开发招聘郴州网站开发 叙述网站建设的流程沈阳网站建设成创 成都网站设计创新互联网站建设 赣icp 南昌 常州网站搭建公司创建全国文明城市的宗旨是