2013年12月2日 Go生态洞察:Go 1.2的测试覆盖率工具


🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁

🦄 博客首页——🐅🐾猫头虎的博客🎐
🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐
🌊 《100天精通Golang(基础入门篇)》 🐅 学会Golang语言,畅玩云原生,走遍大小厂~💐

🐅🐾猫头虎建议Go程序员必备技术栈一览表📖:

☁️🐳 Go语言开发者必备技术栈☸️:
🐹 GoLang | 🌿 Git | 🐳 Docker | ☸️ Kubernetes | 🔧 CI/CD | ✅ Testing | 💾 SQL/NoSQL | 📡 gRPC | ☁️ Cloud | 📊 Prometheus | 📚 ELK Stack


🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🐅🐾🍁🐥


在这里插入图片描述

文章目录

    • 🐅🐾猫头虎建议Go程序员必备技术栈一览表📖:
  • 2013年12月2日 Go生态洞察:Go 1.2的测试覆盖率工具
    • 摘要
    • 引言
    • 正文
      • 🛠 Go的工具支持
        • Go格式化工具:gofmt
        • 代码重写工具:gofix
      • 🧪 测试覆盖率
        • Go 1.2的测试覆盖工具
          • 代码示例:计算大小
        • 查看结果
        • 热图
      • 🌈 基本块
    • 总结
    • 参考资料
    • 下一篇预告
  • 原创声明

  • 原创作者: 猫头虎

  • 作者wx: Libin9iOak

  • 作者公众号: 猫头虎技术团队

在这里插入图片描述

2013年12月2日 Go生态洞察:Go 1.2的测试覆盖率工具

摘要

🌟大家好,我是猫头虎博主,今天我们要深入探讨Go语言中一个非常酷的特性——Go 1.2引入的测试覆盖率工具。这个工具采用了一种独特的方法来生成覆盖率统计,这正是我们今天的搜索词条。让我们一起深入了解它的内部机制和如何有效提升我们的测试策略吧!

引言

🚀 Go语言自项目开始以来,就以工具为设计核心。这些工具包括像godocgofmtgofix等Go技术的标志性成果。在这些工具中,最重要的可能就是go命令了,它可以仅使用源代码作为构建规范来自动安装、构建和测试Go程序。

正文

🛠 Go的工具支持

Go语言对良好工具的支持意味着它使编写优秀工具变得容易,并且其生态系统支持构建各种工具。Go具有规则的语法,易于解析,标准库中还包含了用于词法分析和解析Go源代码的高质量包。

Go格式化工具:gofmt

gofmt工具的核心是这些包的组合,但其中的美化打印机尤其值得一提。它可以输出标准格式、易读、正确的代码,为构建转换解析树并输出修改后的代码提供了可能。

代码重写工具:gofix

gofix工具自动重写代码以使用新的语言特性或更新的库,使我们能够对语言和库进行根本性更改,同时保证用户可以运行此工具更新其源代码。

🧪 测试覆盖率

测试覆盖率描述了通过运行包的测试来执行包代码的程度。例如,如果执行测试套件导致运行了80%的源语句,则测试覆盖率为80%。

Go 1.2的测试覆盖工具

Go 1.2中提供测试覆盖率的程序是最新利用Go生态系统中的工具支持的工具。这个工具采用了一种避免动态调试的不同方法:重写包的源代码以添加工具,在编译和运行修改后的源代码,并转储统计数据。

代码示例:计算大小

我们有一个简单的单文件包如下:

package size

func Size(a int) string {
    // ... 函数实现 ...
}

以及对应的测试:

package size

import "testing"

// ... 测试实现 ...

运行带-cover标志的测试,我们可以获得包的测试覆盖率:

% go test -cover
PASS
coverage: 42.9% of statements
ok      size    0.026s
%
查看结果

通过-coverprofile标志,我们可以生成一个“覆盖率配置文件”,然后利用go tool cover来详细研究测试覆盖率数据。我们甚至可以生成源代码的HTML展示,其中包含覆盖信息。

热图

这种源代码级的测试覆盖率方法还允许以不同方式对代码进行标注,例如,我们不仅可以询问是否执行了一个语句,还可以知道执行了多少次。

🌈 基本块

测试覆盖率的注释是通过程序中的分支来划分的。这在通过重写源代码时难

以实现,因为分支在源代码中并不显式出现。覆盖注释通过对块进行标注来实现,这些块通常由大括号界定。

总结

📢 以上就是关于Go 1.2中测试覆盖率工具的详细介绍。这个有趣的实现不仅提供了测试覆盖率统计,还提供了易于解读的展示,甚至可以提取性能分析信息。测试是软件开发的重要部分,测试覆盖率是加强测试策略的简单方法。赶快去测试和覆盖你的代码吧!

本文已被猫头虎的Go生态洞察专栏收录,详情点击这里。

参考资料

  • Rob Pike. “The cover story”, 2 December 2013.
  • Go Documentation
  • Go Format Tool
  • Go API Rewriter
  • Go Command

下一篇预告

🌟 下一篇文章我们将探讨“Go Playground”的内部机制,揭秘它如何在网页中运行Go代码。敬请期待!

在这里插入图片描述

原创声明

======= ·

  • 原创作者: 猫头虎

  • 作者wx: Libin9iOak
    在这里插入图片描述

  • 作者公众号: 猫头虎技术团队

在这里插入图片描述

学习复习Go生态

本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,洞察Go生态,共同成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/171006.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

看看GPT-4V是怎么开车的,必须围观,大模型真的大有作为 | 万字长文

自动驾驶技术的发展依赖于感知、决策和控制系统的高效集成。传统的数据驱动方法和基于规则的方法在处理复杂驾驶环境和理解其他道路用户的意图时受到限制。这是实现安全和可靠自动驾驶所必需的重要瓶颈,特别是在发展常识推理和细致场景理解方面。 视觉语言模型的出现…

2023年11月中旬大模型新动向集锦

2023年11月中旬大模型新动向集锦 2023.11.21版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、谷歌生成式 AI 搜索生成体验(SGE)扩展到 120 多个新国家/地区 近日,Google 扩展了其由生成式人工智能驱…

记录--alova组件使用方法(区别axios)

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在我们写项目代码时,应该更加专注于业务逻辑的实现,而把定式代码交给js库或工程化自动处理,而我想说的是,请求逻辑其实也是可以继续简化的。 你可能会说…

国产低功耗Sub-1G全频段收发一体芯片DP4306遥控器、智能抄表、工业控制等应用。

国产低功耗Sub-1G全频段收发一体芯片DP4306遥控器、智能抄表、工业控制等应用。 DP4306芯片是一款高性能低功耗的单片集成收发机,工作频率可覆盖 200MHz~1000MHz,芯片集成了射频接收器、射频发射器、频率综合器、GFSK 调制器、GFSK 解调器等功能模块。通…

如何通过数环通,让企业吸引和留住更多优秀人才?

企业招聘员工以及员工入职,不仅仅只是人力资源重要职能之一,它们更是整个企业成功的关键。 市场永远充满竞争,“战争”一直都在,为了赢得胜利,让最优秀的人选加入是最好的选择。但优秀的人才永远不缺机会,市…

视频剪辑技巧:批量剪辑新篇章,AI智剪来领航

随着数字媒体的飞速发展,视频剪辑已经成为一项重要的工作。在繁忙的工作中,如何高效、准确地完成批量剪辑是一项具有挑战性的任务。近年来,AI智剪的出现为视频剪辑工作带来了新的解决方案,引领着批量剪辑的新篇章。在AI智剪的帮助…

HR人才测评,提高员工和岗位的适配度

作为中小企业领导,除了操心企业的经营管理,还得经常为内部运行做考虑。某个岗位总是缺少匹配的员工,而公司的员工如何进行岗位优化,这都是人资管理中经常遇到的难题,归根结底,是对人才评价的难题。 人才&a…

美国费米实验室SQMS启动“量子车库”计划!30+顶尖机构积极参与

​11月6日,美国能源部费米国家加速器实验室(SQMS)正式启动了名为“量子车库”的全新旗舰量子研究设施。这个6,000平方英尺的实验室是由超导量子材料与系统中心负责设计和建造,旨在联合国内外的科学界、工业领域和初创企业,共同推动量子信息科…

品牌挑选控价服务商的标准参考

控价是一项需要投入时间精力的工作,品牌可以自主团队去做,但如果涉及数据量太大的时候,还需要开发系统,这样显然会增加非常多的成本,系统开发费用和运维费用都是一笔不小的开支,所以现在很多的品牌会选择找…

二进制位(计算机存储数据最小单位)

二进制数据中的一个位(bit)简写为b,音译为比特,是计算机存储数据的最小单位。一个二进制位只能表示0或1两种状态,要表示更多的信息,就要把多个位组合成一个整体,一般以8位二进制组成一个基本单位。计算机内部数据以二进…

企业办公文件数据防泄密系统 | 文件、文档、设计图纸、源代码、音视频等核心数据资料防止外泄!

天锐绿盾防泄密软件采用智能透明加密技术,对文件、文档、图纸、源代码、音视频等数据进行加密保护,防止数据泄露。这种加密技术是内核级透明加密技术,可以在不影响员工正常工作的情况下,对需要保护的数据进行加密操作。 PC端访问地…

2023年中国老年人护理用品市场规模及前景,呈现快速发展趋势[图]

老年护理有着特定含义,它是指对老年人疾病的治疗护理、某些内科慢性疾病或一些外科病患的医学和心理学康复护理,对生活半自理或完全不能自理的老年人的生活护理,以及对病危老年人的心理护理和临终关怀等。老年人护理用品包括老年人护理床垫、…

Zero-Shot Restoration of Back-lit Images Using Deep InternalLearning

ABSTRACT 如何恢复背光图像仍然是一项具有挑战性的任务。该领域最先进的方法基于监督学习,因此通常仅限于特定的训练数据。在本文中,我们提出了一种用于背光图像恢复的“零样本”方案,该方案利用深度学习的力量,但不依赖于任何先…

砖家测评:腾讯云标准型S5服务器和s6性能差异和租用价格

腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…

请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别

“请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别”。 屏幕前有多少同学在面试过程与遇到过类似问题, 可以在评论区留言:遇到过。 考察目的 对于 xxxx 技术的区别,在面试中是很常见的一个问题 一般情况下,面试官会通过这类…

无法打开 “XXXX“ ,因为Apple 无法检测其是否包含恶意软件

解决方案 设置 - > 隐私和安全性 这里会显示这个,点击仍要打开

QT专栏2 -Qt for Android

#2023年11月18日 # Qt version 6.6 JDK17 JDK 安装 Java Downloads | Oracle 设置环境变量 鼠标右键我的电脑,出现如下界面 Qt配置 改用JDK18,没有乱码,由于不影响APK产生。 做了好多尝试,更换JDK版本(11,18,19,21)&…

Ubuntu apt-get换源

一、参考资料 ubuntu16.04更换镜像源为阿里云镜像源 二、相关介绍 1. apt常用命令 sudo apt-get clean sudo apt-get update2. APT加速工具 轻量小巧的零配置 APT 加速工具:APT Proxy GitHub项目地址:apt-proxy 三、换源关键步骤 1. 更新阿里源 …

碰撞检测要点总结

Physics.SphereCast不会检测已经在半径内的碰撞!!! 加个容错 private bool SphereCast(Vector3 _originPos,Vector3 _targetPos,out RaycastHit hit,LayerMask _layerMask) {Vector3 dir (_targetPos - _originPos).normalized;float radius…