🌷🍁 博主猫头虎(🐅🐾)带您 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语言自项目开始以来,就以工具为设计核心。这些工具包括像godoc
、gofmt
和gofix
等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生态,共同成长。