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

news2024/7/30 20:58:39

🌷🍁 博主猫头虎(🐅🐾)带您 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生态,共同成长。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Find My自行车|苹果Find My技术与自行车结合,智能防丢,全球定位

自行车,这项古老而简单的交通工具,近年来在中国经历了一场令人瞩目的复兴。从城市的街头巷尾到乡村的田园小路,自行车成了一种新的生活方式,一个绿色出行的选择。中国的自行车保有量超过两亿辆,但是自行车丢失事件还是…

java算法学习索引之数组矩阵问题

一 将正方形矩阵顺时针转动90 给定一个NN的矩阵matrix,把这个矩阵调整成顺时针转动90后的形式。 顺时针转动90后为: 【要求】额外空间复杂度为O(1)。 public void rotate(int[][] matrix) {int tR 0; // 左上角行坐标int tC 0;…

2023年中国AI大模型行业发展趋势分析:未来发展将走向通用化和专用化并行[图]

AI大模型是AI预训练大模型的简称,通过在大规模数据上进行预训练,无需大量微调即可支持各种应用,具备多层神经网络结构、高级优化算法和强大计算资源,显著提升了AI的通用性和实用性。 AI大模型特点及意义 资料来源:共研…

Java引用类型(String)

目录 String解析 final的作用 String是否有长度限制 StringBuffer解析 StringBuilder解析 关键字、操作类相关 引用数据类型非常多大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型。String类型就是引用类型。 String解析 JVM运行时会分…

姿态估计 手势动作实时识别项目(基于mediapipe、keras进行实现)

姿态估计 手势动作实时识别项目(基于mediapipe、keras进行实现) 0、功能展示1、项目原理介绍2、数据集采集脚本3、将采集到的动作数据集利用mediapipe库检测手部关键点信息,转换成数据信息保存到本地4、训练一个效果一般的随机森林分类器5、使用Kreas训练一个效果好点的全连…

linux内核管理

linux内核会占用一定的空间,所以可以清理一下不需要使用的内核. 参考链接 Linux 内核及其关联文件通常存储在 /boot 目录下,内核模块通常存储在 /lib/modules 目录中。 首先查看已安装的列表: dpkg --list | grep linux-image其中&#xff…

Hfish安全蜜罐部署

一、Hfish蜜罐介绍 HFish蜜罐官网 HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷…

python实战—核心基础4(超市购物小票随机抽奖程序) lv1

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、random() 函数 描述 random() 方法返回随机生成的一个实数,它在[0,1)范围内。 语法 以下是 random() 方法的语法: import randomrandom.random() 注意:random()是不能直接访问…

肉豆蔻酰六肽-16——让皮肤更加光滑、更加柔软

肉豆蔻酰六肽-16 一种合成的脂肪酸连接肽,已知可提高皮肤的弹性,明显镇静,并帮助皮肤看起来和感觉更光滑、更柔软。它是由肉豆蔻酸与六肽 16 结合而成。肉豆蔻酰六肽 16 被归类为蛋白质刺激肽,这意味着它可以帮助皮肤表面&#x…

抽象轻松测试接口API

测试 1.测试环境 2.测试代码 3.代码结构 Maven项目核心依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.3.0</version></dependenc…

2023年中国涂料用环氧树脂需求量及行业市场规模前景分析[图]

环氧树脂具有力学性能高&#xff0c;内聚力强、分子结构致密&#xff0c;粘接性能优异&#xff0c;固化收缩率小&#xff08;产品尺寸稳定、内应力小、不易开裂&#xff09;&#xff0c;绝缘性、防腐性、稳定性、耐热性好&#xff08;可达200℃或更高&#xff09;等特点&#x…

解锁无限可能性:探索Amazon Lightsail的便捷云计算服务

解锁无限可能性&#xff1a;探索Amazon Lightsail的便捷云计算服务 在数字化时代&#xff0c;云计算成为推动创新和业务发展的关键驱动力。Amazon Lightsail 作为 Amazon Web Services&#xff08;亚马逊云科技&#xff09;家族中的一员&#xff0c;为小型企业和创业公司提供了…

共谋发展,共赢未来 | 江西航天红源农业科技总经理孟凡明一行莅临拓世科技集团考察参观

在时刻充满着变化与机遇的商业世界里&#xff0c;农业的颠覆与重构已成为产业新风口&#xff0c;在日新月异的当下&#xff0c;农业与乡村正被开辟成为推动产业结构升级的新战场。 2023年11月20日江西航天红源农业科技有限公司总经理孟凡明一行抵达拓世科技集团南昌总部进行考…

【鸿蒙应用ArkTS开发系列】- 灌水区,鸿蒙ArkTs开发有问题可以在该帖中反馈

大家好, 这是一篇水贴&#xff0c;给大家提供一个交流沟通鸿蒙开发遇到问题的地方。 新增新增这个文章呢&#xff0c;大家在开发使用ArkTS开发鸿蒙应用或者鸿蒙服务的时候&#xff0c;有遇到疑问或者问题&#xff0c;可以在本文章评论区提问&#xff0c;我看到了如果知道怎么…

基于SSM的学生档案管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

SpingBoot原理

目录 配置优先级Bean管理 (掌握)Bean的获取 ApplicationContext.getBeanBean的作用域 Scope("prototype") Lazy第三方Bean Bean Configuration SpringBoot底层原理 起步依赖与自动配置(无需手撸但面试高频知识点)自动配置引入第三方依赖常见方案方案1&#xff1a;Com…

python实战—数据分析与图表1(QQ群聊天数据分析) lv2

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、readlines() 方法 描述 readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表&#xff0c;该列表可以由 Python 的 for... in ... 结构进行处理。 如果碰到结束符 EOF 则返回空字符串。 语法 r…

HINSTANCE是什么?

HINSTANCE 就是 HMODULE&#xff1a;

SVN创建分支

一 从本地创建方式可指定版本号进行分支创建。 1、在本地目录右击 -----> 点击branch/tag(分支/标签) From: 源&#xff0c;可指定具体的版本号&#xff0c; To path: 可通过"..."选择分支路径 最后点击确定&#xff0c;交由服务器执行创建。 二 通过SVN客…

存储配置和挂载方式

存储配置 Iscsi简介 iSCSI 启动器&#xff0c;从本质上说&#xff0c;iSCSI 启动器是一个客户端设备&#xff0c;用于将请求连接并启动到服务器&#xff08;iSCSI 目标&#xff09;。 iSCSI 启动器有三种实现方式&#xff1a;可以完全基于硬件实现&#xff0c;比如 iSCSI H…