博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang UnitTest单元测试
阅读量:5958 次
发布时间:2019-06-19

本文共 1633 字,大约阅读时间需要 5 分钟。

最近做项目的时候一直很苦恼,go的 是怎么回事,之前有看过go    xx_test.go命令进行单元测试,只知道有这么一说。最近项目中写了很多工具类,一直想测试一下性能和执行结果。发现完全不对。
  这是代码。
  发现多次执行go test utilfile_test.go完全没有任何输出。查很多原因和多帖子,都没说到重点。今天在群里问了下,才发现go单元测试对文件名和方法名,参数都有很严格的要求。
  
例如:
  1、文件名必须以xx_test.go命名
  2、方法必须是Test[^a-z]开头
  3、方法参数必须 t *testing.T
  之前就因为第 2 点没有写对,导致找了半天错误。现在真的让人记忆深刻啊,小小的东西当初看书没仔细。
  
下面分享一点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 : 将那些运行时间较长的测试用例运行时间缩短
最新内容请见作者的GitHub页:http://qaseven.github.io/

转载地址:http://rzgxx.baihongyu.com/

你可能感兴趣的文章
MediaPlayer的错误修复
查看>>
网络安全之***手法计中计
查看>>
Struts2拦截器的使用 (详解)
查看>>
我的友情链接
查看>>
OEL7.2下Oracle11.2.0.4RAC部署
查看>>
nagios安装与配置
查看>>
RedHat 设置IP、网关、DNS
查看>>
MYSQL 主从复制读写分离实现
查看>>
linux更改语言
查看>>
centos7 修改mac地址
查看>>
<script>标签的加载解析执行
查看>>
恢复rm删除的文件(ext3
查看>>
账户注销完自动登录账户,并且不需要再点击屏幕的账户头像
查看>>
【Interface&navigation】按钮(29)
查看>>
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
Server-01 How to Find the Remote Desktop Port
查看>>
Java--接口、抽象与继承
查看>>
通过IP判断登录地址
查看>>
Oracle闪回技术
查看>>
利用单壁路由实现vlan间路由
查看>>