Golang UnitTest单元测试

Golang单元测试对文件名和方法名,参数都有很严格的要求。

1、文件名必须以xx_test.go命名
2、方法必须是Test[^a-z]开头
3、方法参数必须 t *testing.T
4、使用go test执行单元测试

go test的参数解读:

go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试

通过go help test可以看到go test的使用说明:

格式形如:
go test [-c] [-i] [build flags] [packages] [flags for test binary]

参数解读:
-c : 编译go test成为可执行的二进制文件,但是不运行测试。

-i : 安装测试包依赖的package,但是不运行测试。

关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空

关于packages,调用go help packages,这些是关于包的管理,一般设置为空

关于flags for test binary,调用go help testflag,这些是go test过程中经常使用到的参数

-test.v : 是否输出全部的单元测试用例(不管成功或者失败),默认没有加上,所以只输出失败的单元测试用例。

-test.run pattern: 只跑哪些单元测试用例

-test.bench patten: 只跑那些性能测试用例

-test.benchmem : 是否在性能测试的时候输出内存情况

-test.benchtime t : 性能测试运行的时间,默认是1s

-test.cpuprofile cpu.out : 是否输出cpu性能分析文件

-test.memprofile mem.out : 是否输出内存性能分析文件

-test.blockprofile block.out : 是否输出内部goroutine阻塞的性能分析文件

-test.memprofilerate n : 内存性能分析的时候有一个分配了多少的时候才打点记录的问题。这个参数就是设置打点的内存分配间隔,也就是profile中一个sample代表的内存大小。默认是设置为512 * 1024的。如果你将它设置为1,则每分配一个内存块就会在profile中有个打点,那么生成的profile的sample就会非常多。如果你设置为0,那就是不做打点了。

你可以通过设置memprofilerate=1和GOGC=off来关闭内存回收,并且对每个内存块的分配进行观察。

-test.blockprofilerate n: 基本同上,控制的是goroutine阻塞时候打点的纳秒数。默认不设置就相当于-test.blockprofilerate=1,每一纳秒都打点记录一下

-test.parallel n : 性能测试的程序并行cpu数,默认等于GOMAXPROCS。

-test.timeout t : 如果测试用例运行时间超过t,则抛出panic

-test.cpu 1,2,4 : 程序运行在哪些CPU上面,使用二进制的1所在位代表,和nginx的nginx_worker_cpu_affinity是一个道理

-test.short : 将那些运行时间较长的测试用例运行时间缩短

golang中的测试命令相关推荐

  1. Golang中Buffer高效拼接字符串以及自定义线程安全Buffer

    本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章.觉得好的话,顺手分享到朋友圈吧,感谢支持. Go中可以使用"+ ...

  2. 如何在golang中关闭bufio.reader_Golang 并发模型系列:1. 轻松入门流水线模型

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文 ...

  3. go语言的iota是什么意思_关于Golang中的iota

    快速一览 iota是Golang中提供的一个简化常量和枚举编程的标识符,合理的使用这个标识符可以让代码变得更简洁,省去大量的不必要的代码. 比如下面的这个常量定义 const ( a = 1 b = ...

  4. Golang中的panic和recover(捕获异常)

    Golang中的panic和recover(捕获异常) 参考文章: (1)Golang中的panic和recover(捕获异常) (2)https://www.cnblogs.com/zhzhlong ...

  5. golang 中string和int类型相互转换

    总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: test_int, err := strconv.Atoi(test_string) if err != ni ...

  6. golang中并发sync和channel

    golang中并发sync和channel chenbaoke · 2014-12-08 13:00:01 · 19151 次点击 · 预计阅读时间 5 分钟 · 不到1分钟之前 开始浏览 这是一个创 ...

  7. golang中的sync.WaitGroup

    golang中的sync.WaitGroup Posted on 2015/04/09刚才看golang的sync的包,看见一个很有用的功能.就是WaitGroup. 先说说WaitGroup的用途: ...

  8. 初步解读Golang中的接口相关编写方法

    初步解读Golang中的接口相关编写方法 概述如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口 ...

  9. golang中utf8和汉字互转

    golang中utf8和汉字互转 package mainimport ("fmt""strconv""strings" )func mai ...

最新文章

  1. 八个最致命的Linux命令!
  2. FAT32文件系统结构分析
  3. 工作流编程循序渐进(3:While活动)
  4. Bootstrap list-group-item获取值
  5. java流与文件——流
  6. React与ES6(一)开篇介绍
  7. 限免!百名 AI 大咖,20 大技术和行业论坛,邀你加入群聊
  8. oracle的热备份和冷备份
  9. Gocloud高恪固件CVE-2020-8949漏洞利用打开SSH(poc支持5.2最新版测试通过)
  10. 【Linux上分之路】第二篇:Linux硬件、磁盘结构和分区,Linux文件目录结构
  11. 根据ip查询真实地址
  12. 在VirtualBox安装Ubuntu虚拟机实现文件夹共享
  13. strpos php 中文,php substr中文乱码最有效到解决办法 还有strpos不能比较中文
  14. pymysql数据库的水果店销售系统之管理员端1.0
  15. 中国移动物联网连接规模超6000万
  16. 【数据结构oj】树的度(树和二叉树的相互转化)
  17. 美国国家信用合作社管理局(NCUA)发布RFI询问信用合作社加密相关问题
  18. 破解梵蒂冈秘密档案,这个AI认识中世纪手写拉丁文
  19. 2022高考季征文获奖名单公布
  20. 2015.10.26软件更新公告

热门文章

  1. 【Android 系统开发】Android JNI 之 JNIEnv 解析
  2. Django的类视图和中间件
  3. 剑指offer(49)把字符串转换成整数。
  4. 查询数据库表名,数据表信息,MySQL Key值(PRI, UNI, MUL)的含义
  5. Codevs 5590 A+B 问题 超级版
  6. javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
  7. DOCTYPE声明对JS获取窗口宽度和高度的影响【转】
  8. 满有趣的屏幕快捷键;)
  9. C/C++中的指针变量可以相互赋值,使得它们指向同一块地址空间
  10. 交换排序之——快速排序(c/c++)