🌷🍁 博主猫头虎(🐅🐾)带您 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程序员必备技术栈一览表📖:
- 2016年10月3日 Go生态洞察:Go 1.7中的子测试和子基准测试
- 📄 摘要
- 🚀 引言
- 📚 正文
- 📌 表驱动测试基础
- 📌 表驱动基准测试
- 📌 使用子测试进行表驱动测试
- 📌 运行特定测试或基准测试
- 📌 设置和拆卸
- 📌 并行控制
- 📌 并行测试组的运行
- 📋 表格总结
- 🌟 总结
- 📢 下一篇预告
- 原创声明
-
原创作者: 猫头虎
-
作者wx: Libin9iOak
-
作者公众号: 猫头虎技术团队
2016年10月3日 Go生态洞察:Go 1.7中的子测试和子基准测试
📄 摘要
大家好,我是猫头虎博主!今天我们来聊聊Go语言中的一个相当酷的特性——Go 1.7中引入的子测试和子基准测试。这个功能不仅让我们的代码更加简洁、易于维护,而且还为我们提供了更精细的控制测试运行的能力。如果你对Go语言或者编程测试感兴趣,那就别错过这篇文章了哦!🐱👀
🚀 引言
在Go 1.7版本中,testing
包通过在T
和B
类型上引入了一个Run方法,为我们带来了子测试和子基准测试的创建能力。这个改变不仅优化了失败处理方式,还提供了更细致的命令行控制,以及更加简洁和可维护的代码结构。
📚 正文
📌 表驱动测试基础
在深入了解之前,让我们先看看Go中常见的测试编写方法。通过遍历测试用例切片来实现一系列相关检查:
func TestTime(t *testing.T) {
testCases := []struct {
gmt string
loc string
want string
}{
{"12:31", "Europe/Zuri", "13:31"}, // incorrect location name
{"12:31", "America/New_York", "7:31"}, // should be 07:31
{"08:08", "Australia/Sydney", "18:08"},
}
// ...
}
这种被称为表驱动测试的方法,相比于为每个测试重复相同的代码,减少了代码重复,并简化了添加更多测试用例的过程。
📌 表驱动基准测试
在Go 1.7之前,无法使用相同的表驱动方法进行基准测试。基准测试是测试整个函数的性能,因此遍历基准测试只会将它们作为单个基准测试进行度量。
func BenchmarkAppendFloat(b *testing.B) {
benchmarks := []struct{
name string
float float64
fmt byte
prec int
bitSize int
}{
{"Decimal", 33909, 'g', -1, 64},
// ...
}
// ...
}
Go 1.7中使用Run
方法,可以将一组基准测试表达为一个顶级基准测试。
📌 使用子测试进行表驱动测试
Go 1.7还为创建子测试引入了Run
方法。这是我们之前示例的使用子测试重写版本:
func TestTime(t *testing.T) {
// ...
for _, tc := range testCases {
t.Run(fmt.Sprintf("%s in %s", tc.gmt, tc.loc), func(t *testing.T) {
// ...
})
}
}
📌 运行特定测试或基准测试
子测试和子基准测试可以通过命令行上的-run
或-bench
标志单独指定。
📌 设置和拆卸
子测试和子基准测试可用于管理公共的设置和拆卸代码。
📌 并行控制
子测试允许对并行性进行细粒度控制。
📌 并行测试组的运行
可以使一组测试彼此并行运行,但不与其他并行测试并行。
📋 表格总结
关键点 | 描述 |
---|---|
表驱动测试 | 通过遍历测试用例简化测试编写 |
子测试和子基准测试 | Go 1.7引入,允许更精细的测试控制 |
命令行控制 | 使用-run 和-bench 标志精确运行特定测试 |
设置和拆卸 | 管理公共代码,确保测试的正确初始化和清理 |
并行性控制 | 细粒度的并行测试控制,优化测试性能 |
🌟 总结
本文被猫头虎的Go生态洞察专栏收录,详情点击这里。我们介绍了Go 1.7中引入的子测试和子基准测试,它们不仅让代码更简洁、易于维护,而且提供了更精细的控制测试运行的能力。
📢 下一篇预告
下次我们将探索Go语言中的HTTP追踪功能,一个强大的工具,用于分析和优化Web应用程序的性能。敬请期待!🐾🌐
原创声明
======= ·
-
原创作者: 猫头虎
-
作者wx: Libin9iOak
-
作者公众号: 猫头虎技术团队
学习 | 复习 | Go生态 |
---|---|---|
✔ | ✔ | ✔ |
本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。
作者保证信息真实可靠,但不对准确性和完整性承担责任。
未经许可,禁止商业用途。
如有疑问或建议,请联系作者。
感谢您的支持与尊重。
点击
下方名片
,加入IT技术核心学习团队。一起探索科技的未来,洞察Go生态,共同成长。