Go 语言核心 36 讲
郝林
《Go 并发编程实战》作者,前轻松筹大数据负责人
79610 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
Go 语言核心 36 讲
15
15
1.0x
00:00/00:00
登录|注册

23 | 测试的基本规则和流程 (上)

示例测试(example)
基准测试(benchmark)
功能测试(test)
测试函数描述和保障程序实体的功能
程序员测试
讨论
用途
性能测试一般都是串行进行
并发地对多个被测代码包进行功能测试
对每个被测代码包进行构建、执行测试函数、清理临时文件、打印测试结果
准备工作
名称以Example为前缀
唯一参数的类型必须是*testing.B类型的
名称以Benchmark为前缀
参数列表中只应有一个*testing.T类型的参数声明
名称以Test为前缀
测试函数的名称和签名规定
测试源码文件命名规则
三类测试
单元测试
Go语言重视程序测试
优良的程序和软件需要重视测试
对程序和软件来讲,尽早发现问题、修正问题非常重要
testing.T类型和testing.B类型的方法
go test命令的主要测试流程
示例测试函数
性能测试函数
功能测试函数
Go语言的测试基础知识
程序测试的重要性
思考题
go test命令执行的主要测试流程
Go语言对测试函数的名称和签名规定
Go语言的测试基础知识
重视程序测试的重要性
测试的基本规则和流程

该思维导图由 AI 生成,仅供参考

你好,我是郝林,今天我分享的主题是:测试的基本规则和流程(上)。
你很棒,已经学完了本专栏最大的一个模块!这涉及了 Go 语言的所有内建数据类型,以及非常有特色的那些流程和语句。
你已经完全可以去独立编写各种各样的 Go 程序了。如果忘了什么,回到之前的文章再复习一下就好了。
在接下来的日子里,我将带你去学习在 Go 语言编程进阶的道路上,必须掌握的附加知识,比如:Go 程序测试、程序监测,以及 Go 语言标准库中各种常用代码包的正确用法。
从上个世纪到今日今时,程序员们,尤其是国内的程序员们,都对编写程序乐此不疲,甚至废寝忘食(比如我自己就是一个例子)。
因为这是我们普通人训练自我、改变生活、甚至改变世界的一种特有的途径。不过,同样是程序,我们却往往对编写用于测试的程序敬而远之。这是为什么呢?
我个人感觉,从人的本性来讲,我们都或多或少会否定“对自我的否定”。我们不愿意看到我们编写的程序有 Bug(即程序错误或缺陷),尤其是刚刚倾注心血编写的,并且信心满满交付的程序。
不过,我想说的是,人是否会进步以及进步得有多快,依赖的恰恰就是对自我的否定,这包括否定的深刻与否,以及否定自我的频率如何。这其实就是“不破不立”这个词表达的含义。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了Go语言中的测试基本规则和流程,强调了程序测试的重要性以及Go语言对测试的重视。作者详细解释了Go语言中的单元测试,包括功能测试、基准测试和示例测试,并阐述了测试源码文件的命名规则和测试函数的命名和签名规定。此外,还介绍了`go test`命令的执行流程,包括准备工作、构建、执行测试函数、清理临时文件和打印测试结果等步骤。并发测试和性能测试的特点也得到了介绍。总的来说,本文为读者提供了深入了解和掌握Go语言测试的基础知识,对于想要学习Go语言测试的读者来说是一篇很有价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言核心 36 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • dean不闷
    老师,能推荐一下go的测试框架吗?我们想做单元测试/分层测试。十分感谢!

    作者回复: Go语言自带的就很好啊,一般不需要其他框架。如果非要用一个的话,testify不错。

    2019-03-12
    10
  • 窗外
    老师,我为什么执行实例下的demo52,demo52_test.go的测试命令go test demo52_test.go,会提示 .\demo52_test.go:10:19: undefined: hello hello和introduce在demo52的源码文件里都有声明的呢? 另外你文中说的TestIntroduce为什么不会被执行呢?我看了实例52,函数声明都是一致的

    作者回复: 你要是指定文件,就指定全:go test demo52.go demo52_test.go 。要么你就直接在那个目录下执行 go test ,不追加任何文件。 只要 TestIntroduce 函数签名完全匹配了规则就没问题。文中的这块或许可以改一下。

    2019-07-18
    2
    5
  • 给力
    在go语言实战一书中 单元测试划分为: 表组测试 基础测试 基准测试: 。。。 事例测试: 。。。 这么多分类都是各家之言,go官方给的分类又是什么呢?

    作者回复: 按Go官方,只有三种测试:功能测试、基准测试、示例测试。我的书和专栏里都只遵循这个分类。

    2020-03-22
    3
  • 虢國技醬
    打卡 写来大半年的go,竟然没写过测试,哎 🤣

    作者回复: 赶紧加上;)

    2019-01-22
    3
  • 谭棋钊
    老师,我直接在你的Golang_Puzzlers/src/puzzlers/article20/q0代码文件夹下执行go test,会报go: cannot find main module的错误,是什么原因?

    作者回复: 因为Go语言在通过最近这几个版本调整 go module 模式的默认开关,所以这跟你所用的go版本有关系。你可以这样: $ export GO111MODULE=auto; go test 也就是先 export GO111MODULE=auto 再 go test

    2021-03-18
    2
  • dean不闷
    老市区,单元测试的go文件,方法的命名,您有什么建议呢?

    作者回复: testing代码包中文档在这方面有很明确的规定啊,我在文章中也讲了。

    2019-03-31
    2
  • jxs1211
    ‘ 并且,下一个代码包性能测试的进行,总会等到上一个代码包性能测试的结果打印完成才会开始,而且性能测试函数的执行也都会是串行的。 ’ 这里的意思是不是,每个代码包间性能测试函数是串行执行,每个代码包内部的性能测试函数也是串行执行,问题: 如果是这样的话,哪设置P的作用是什么,不都是串行执行吗 另外对功能测试函数,代码包之间和代码包内部的测试函数都是通过goroutine并发的执行的吧

    作者回复: 性能测试之间默认是串行的,因为怕互相在性能上有干扰(测的就是性能啊)。设置P主要是为了功能测试,功能测试默认是并发的(不涉及性能方面的测试)。

    2021-12-18
  • Howard.Wundt
    在 The Go Programming Language 中,Testing 是第十一章,已经接近书的结尾了。 本节课末尾的思考题,经过 google 得知: testing.T 的部分功能有(判定失败接口,打印信息接口) testing.B 拥有testing.T 的全部接口,同时还可以统计内存消耗,指定并行数目和操作计时器等。
    2018-10-03
    39
  • Haiyung
    我记得是2018年购买的这个专栏,当时囫囵吞枣的看了一遍,感觉还行; 过了一年多,回过头来再看一遍郝林老师的这个专栏,这才感受到这个专栏的系统性,郝林老师真用心啊! 虽然Go已经从1.10升级到了1.15,但以我做了两年Go开发的经验来看,即便Go真的到了2.0时代,郝林老师的这个专栏依然是不可多得的Go教程。
    2020-09-28
    17
  • CcczzZ
    去年开始写Go,基本没写过测试用例。。。 今年开始慢慢有这个意识去完善各个函数、接口的单元测试,在自测的过程中也发现了很多bug和优化点,最终提测质量稳稳提高~ 保持写各种测试代码是一种好习惯呀
    2020-01-13
    1
    15
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部