Go 语言项目开发实战
孔令飞
腾讯云专家工程师,前 Red Hat、联想云工程师
41031 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 61 讲
Go 语言项目开发实战
15
15
1.0x
00:00/00:00
登录|注册

36 | 代码测试(上):如何编写 Go 语言单元测试和性能测试用例?

timeout
cpu
benchtime
benchmem
参数为*testing.B
Benchmark开头
使用 gotests 工具
对不同输入和输出进行测试
使用结构体数组
参数为 *testing.T
Test 开头
必须以TestBenchmarkExample开头
黑盒测试
白盒测试
必须以_test.go结尾
白盒测试和黑盒测试的场景选择
编写 PrintHello 函数及单元测试用例
总结
性能测试的参数
性能测试用例函数
总结
自动生成单元测试用例
多个输入的测试用例
单元测试用例函数
变量的命名规范
函数的命名规范
包的命名规范
测试文件的命名规范
内容:介绍了如何编写单元测试和性能测试用例,以及测试命名规范、单元测试、性能测试、多个输入的测试用例、生成单元测试用例、性能测试的参数和总结。
作者:孔令飞
标题:如何编写 Go 语言单元测试和性能测试用例?
课后练习
性能测试
单元测试
测试命名规范
参考文章
如何编写 Go 语言单元测试和性能测试用例

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

你好,我是孔令飞。
从今天开始,我们就进入了服务测试模块,这一模块主要介绍如何测试我们的 Go 项目。
在 Go 项目开发中,我们不仅要开发功能,更重要的是确保这些功能稳定可靠,并且拥有一个不错的性能。要确保这些,就要对代码进行测试。开发人员通常会进行单元测试和性能测试,分别用来测试代码的功能是否正常和代码的性能是否满足需求。
每种语言通常都有自己的测试包 / 模块,Go 语言也不例外。在 Go 中,我们可以通过testing包对代码进行单元测试和性能测试。这一讲,我会用一些示例来讲解如何编写单元测试和性能测试用例,下一讲则会介绍如何编写其他的测试类型,并介绍 IAM 项目的测试用例。

如何测试 Go 代码?

Go 语言有自带的测试框架testing,可以用来实现单元测试(T 类型)和性能测试(B 类型),通过go test命令来执行单元测试和性能测试。
go test 执行测试用例时,是以 go 包为单位进行测试的。执行时需要指定包名,比如go test 包名,如果没有指定包名,默认会选择执行命令时所在的包。go test 在执行时,会遍历以_test.go结尾的源码文件,执行其中以TestBenchmarkExample开头的测试函数。
为了演示如何编写测试用例,我预先编写了 4 个函数。假设这些函数保存在 test 目录下的math.go文件中,包名为test,math.go 代码如下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了在 Go 语言项目中编写单元测试和性能测试用例的重要性和方法。作者首先强调了保证功能稳定可靠且具有良好性能的重要性,并详细介绍了通过单元测试和性能测试来实现这一目标。文章详细介绍了使用 Go 语言自带的 `testing` 包进行单元测试和性能测试的方法,包括测试命名规范、单元测试用例函数的编写以及 `go test` 命令的参数使用。此外,文章还介绍了如何编写支持多输入的测试用例和使用 `github.com/stretchr/testify/assert` 包进行结果对比。另外,文章还介绍了如何使用 `gotests` 工具自动生成测试代码,并详细讲解了性能测试的编写和执行方法,包括性能测试函数的命名规范、参数使用以及执行结果的解读。整体而言,本文内容详实,适合 Go 语言开发者快速了解如何进行单元测试和性能测试。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言项目开发实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • daz2yy
    老师,问下,测试的代码建议放在代码相同目录包下还是放在项目根目录下的 test 目录呢?

    作者回复: 放在跟被测代码相同的目录下,便于维护

    2021-08-17
    5
  • lianyz
    老师,什么时候使用ExampleXxx呢?

    作者回复: 有fmt.Println/fmt.Printf这类输出的时候

    2021-08-17
    4
  • Struggle~honor
    vscode可以生成测试代码

    作者回复: 666

    2022-01-23
    2
  • 陈麒文
    那有没有自动生成Benchmark的性能工具呢?还有TestXxx一般是针对函数么,如果是接口的话,参数值该怎么定义?

    作者回复: 暂时没发现有自动生成Benchmark的工具。 使用Mock来测试

    2021-08-25
    1
  • coyang
    老师好,请问go常用/好用的mock框架有什么推荐的?

    作者回复: 代码测试(下):Go 语言其他测试类型及 IAM 测试介绍 这一讲有介绍

    2022-02-07
  • 授人以🐟,不如授人以渔
    在“如何测试Go代码?”这节的开头,“默认会选择执行命令时所在的包”,修改为“默认会选择执行命名时所在的目录”可能会容易理解。

    作者回复: 前面的更准确

    2021-08-25
  • Sch0ng
    go自带测试框架testing。 使用gotests工具自动生成测试代码。 单元测试的价值是提高代码的可靠性,重构的时候多一层保障。 遇到单元测试不知道怎么写的情况,首先考虑函数的粒度是不是太粗,能不能拆成更小的函数。
    2021-08-19
    7
  • fcl
    自己写的代码 知道哪个函数经常改 好控制 用白盒测试 别人写的复杂代码 自己只是调用接口 函数太多不知道测哪个 用黑盒测试 面试官:我没问题了,你还有什么想问的吗?
    2022-04-22
    5
  • 韩堂
    $ go get -u github.com/cweill/gotests/... 后没有直接生成对应的gotests binary
    2023-02-08归属地:浙江
    1
  • Allen
    go test真的太粗糙了
    2021-11-29
    1
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部