2016年10月3日 Go生态洞察:Go 1.7中的子测试和子基准测试


🌷🍁 博主猫头虎(🐅🐾)带您 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包通过在TB类型上引入了一个Run方法,为我们带来了子测试和子基准测试的创建能力。这个改变不仅优化了失败处理方式,还提供了更细致的命令行控制,以及更加简洁和可维护的代码结构。

📚 正文

📌 表驱动测试基础

在深入了解之前,让我们先看看Go中常见的测试编写方法。通过遍历测试用例切片来实现一系列相关检查:

func TestTime(t *testing.T) {testCases := []struct {gmt  stringloc  stringwant 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    stringfloat   float64fmt     byteprec    intbitSize 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生态,共同成长。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业微信web登录实现

企业微信登录流程 实现方式 使用js-sdk 使用 wecom/jssdk 初始化企业微信登录组件。 为了满足网站定制化的需求,我们支持将企业微信登录组件内嵌到开发者的网站中。用户使用企业微信登录授权后,登录组件将 auth code 返回给网站。 企业微信登录组件主…

Python-函数传参与数据类型

Python中,函数参数传递是通过对象的引用进行的,我们可以进行下面的验证。 def use_name(val):print("name id :%s" % (id(val)))val "hanshu1"print("name id modified :%s" % (id(val)))def test_ref():name "ha…

MyBatisPlus总结

MyBatis-Plus时Mybatis的Best Partner MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入损耗小强大的 CR…

城市生命线丨市政综合管廊监测系统的效果

市政综合管廊,又被称为城市生命线,是我们在地下建造的一个智慧而高效的空间。它把市政、电力、通讯、燃气、给排水等各种管线集于一体,解决了城市中反复开挖路面、架空线网密集、管线事故频发等问题,为城市运行提供了重要的基础设…

ELK企业级日志分析平台——kibana数据可视化

部署 新建虚拟机server5,部署kibana [rootelk5 ~]# rpm -ivh kibana-7.6.1-x86_64.rpm [rootelk5 ~]# cd /etc/kibana/[rootelk5 kibana]# vim kibana.ymlserver.host: "0.0.0.0"elasticsearch.hosts: ["http://192.168.56.11:9200"]i18n.local…

RK3399平台开发系列讲解(内核入门篇)ConfigFS 的核心数据结构

🚀返回专栏总目录 文章目录 一、关键数据结构二、config_item 的结构体三、属性和方法沉淀、分享、成长,让自己和他人都能有所收获!😄 📢虚拟文件系统 ConfigFS 是一个特殊的文件系统,旨在提供一种动态配置 Linux 内核和设备的机制。 一、关键数据结构 ConfigFS 的核…

Python武器库开发-前端篇之html概述(二十八)

前端篇之html概述(二十八) html概述 HTML5是构建Web内容的一种语言描述方式。HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。HTML产生于1990年,1997年HTML4成为互联网标准,…

蒸蛋器上平台销售UL1026检测报告标准

蒸蛋器是一种采用发热盘通电后,使盘内产生高温蒸汽来快速把禽蛋蒸熟的一种生活小家电。蒸蛋器最大的特点就是快速、简单,并充满乐趣。 深圳ISO 17025实验室办理蒸蛋器亚马逊美国站UL报告办理UL1026测试标准。 UL1026标准是关于蒸蛋器的安全性要求&…

沉头孔和埋头孔的区别

埋头空和沉头孔的区别在于螺栓孔上部扩孔:沉头孔是直筒结构;埋头孔是四十五度结构,比沉头孔较为平顺。 螺栓孔上部扩孔能容纳螺栓头部,使螺头部不高于周围表面。埋头空和沉头孔只是两种不同的叫法。 沉头孔是 PCB 上的圆柱形凹槽…

配电室智慧运维监控系统

配电室智能运维监控系统是一个综合性的管理系统,专门针对配电室的运维工作进行设计。依托电易云-智慧电力物联网,它融合了先进的监测技术、自动化技术、数据分析技术等,对配电室进行全方位、实时的智能化监控和管理,以提升配电室运…

北京劲松HPV诊疗中心专业分析:扁平疣有什么特征?

扁平疣是一种常见的皮肤疾病,具有传染性,其主要特征包括皮肤出现扁平的丘疹、轻微瘙痒、好发于青少年等。今日特邀北京劲松HPV诊疗中心主任谭巍将详细介绍扁平疣的特征,希望借此能提高大众认知水平,以更好预防。 年轻漂亮的小芳是…

opencv-ORB检测

ORB(Oriented FAST and Rotated BRIEF)是一种图像特征检测和描述算法,结合了 FAST 关键点检测器和 BRIEF 描述子的优点。ORB 算法具有良好的性能,特别适用于实时应用,如目标追踪、相机定位等。 以下是 ORB 算法的一般…