golang单元测试简述
Golang中内置了对单元测试的支持,不需要像Java一样引入第三方Jar才能进行测试,下面将分别介绍Golang所支持的几种测试;
一、测试类型
Golang中单元测试有功能测试、基准测试、示例测试或称示例函数三种;
功能测试必须以TestXXX函数名出现,基准测试必须以BenchmarkXXX函数名出现,示例函数必须以ExampleXXX函数名出现。
//功能测试
func TestXXX(t *testing.T){
}
//基准测试
func BenchmarkXXX(b * testing.B){
}
//示例函数
func ExampleXXX(){
}
二、功能测试
函数名:TestXxx,以Test为前缀的功能测试函数
参数类型:*testing.T
功能函数:
func(a, b int) Mul {
return b * b
}
测试函数:
func TestMul(t *testing.T) {
arr := [...]int{2, 4, 6}
expected := []int{8, 12}
for j := 0; j < 2; j++ {
result := Add(arr[j], arr[j+1])
if result != expected[j] {
//失败后停止后序逻辑
t.Fatalf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result)
//失败后继续执行后序逻辑
//t.Errorf("input is %d, the expected is %d, the actual %d", arr[j], expected[j], result)
}
}
}
二、基准测试
用于对程序功能进行可定量、可对比的性能测试;
函数名:BenchmarkXxx,以Test为前缀的测试功能函数
参数类型:*testing.B
func BenchmarkMul(b *testing.B) {
for i := 0; i < b.N; i++ {
Mul(i, i)
}
}
执行结果:
goos: windows
goarch: amd64
pkg: solinx.co/LCache/test
BenchmarkMul-12 1000000000 0.323 ns/op
PASS
coverage: 100.0% of statements
ok solinx.co/LCache/test 0.499s
结果分析:
执行执行环境:windows
架构:amd64
包路径
BenchmarkMul-12:总共12个逻辑cpu
函数执行时间 0.499秒
测试代码覆盖率:100%
三、示例测试
func ExampleMul() {
a := Mul(2, 2)
fmt.Println(a)
//Output: 41
}
输出内容到标准输出,参数没有限制;go test执行时会监测实际输出与注释中的期望结果是否一致,一致时测试通过,不一致则测试失败;
通过:

失败:
=== RUN ExampleMul
--- FAIL: ExampleMul (0.00s)
got:
4
want:
41
FAIL
coverage: 100.0% of statements
得到了:4,需要的是:41 测试失败;
四、go test 参数介绍
-count: 设置执行测试函数的次数, 默认 1
-run: 执行功能测试函数, 可正则匹配
-bench: 执行基准测试函数, 可正则匹配
-benchtime: 基准测试最大探索时间
-parallel: 设置功能测试函数最大并发执行数
-v: 是展示测试过程信息
-cover:显示测试代码覆盖率
-list : 列出所匹配的测试函数,不执行
执行与Test匹配的测试函数
go test -run Test
文章首发地址:Solinx
https://mp.weixin.qq.com/s/nqnXiOT_CfD6qWeE6xsrhw
golang单元测试简述的更多相关文章
- ARTS-S golang单元测试
golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittest f ...
- Golang单元测试框架整理
目录 一.单元测试是什么 二.单元测试的意义 三.Golang单元测试框架 3.1 Golang内置testing包 3.1.1 简单的测试 3.1.2 Benchmark 基准测试 3.1.3 运行 ...
- golang单元测试
使用testing进行单元测试 golang的测试库testing 测试文件与被测试文件在同一个包中 测试文件名为被测试文件名(去后缀)_test.go 测试用例函数以Test开头,TestFunc1 ...
- golang 单元测试
单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率.所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解. go 语言 ...
- golang 单元测试&&性能测试
一:单元测试 1.为什么要做单元测试和性能测试 减少bug 快速定位bug 减少调试时间 提高代码质量 2.golang的单元测试 单元测试代码的go文件必须以_test.go结尾 单元测试的函数名必 ...
- golang 单元测试(一)
单元测试函数类型 Test(功能测试) 函数规则: 函数名: TestXxxx , 以Test为前缀.Xxxx以大写字母开头 参数类型: *testing.T func TestXxxx(t *tes ...
- golang单元测试一(简单函数测试)
0.1.索引 https://blog.waterflow.link/articles/1663688140724 1.简介 单元测试是测试代码.组件和模块的单元函数.单元测试的目的是清除代码中的错误 ...
- 【GoLang】GoLang 单元测试、性能测试使用方法
单元测试代码: ackage test import ( // "fmt" "testing" ) func Test_FlowControl(t *testi ...
- Golang 单元测试和性能测试
开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早 ...
随机推荐
- 【Oracle】内连接、外连接、(+)的使用
表各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 40C 连接分为两种:内连接与外连接. A.内连接 内连接,即最常见 ...
- NOI4.6 最小新整数——切山游戏
描述 给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0.n的位数为m. 现在从m位中删除k位(0<k < m),求生成的新整数最小为多少? ...
- c#数字图像处理(十三)图像开运算与闭运算
图像开运算与闭运算定义 二值图像开运算的数学表达式为: g(x, y)=open[f(x, y ), B]=dilate{erode[f(x, y),B],B} 二值图像的开运算事实上就是先作腐蚀运算 ...
- 创建dynamics CRM client-side (二) - Client API
如果我们想用script来直接在form上做一些修改, 我们需要用到client api 来做交互. 我们可以用以下来理解: Form <---> Client API <---&g ...
- ArrayList.subList方法使用总结
ArrayList.subList方法使用总结 示例 List<String> list=new ArrayList<>(); list.add("d"); ...
- 双括号(()),shell与C++的桥梁
使用语法: ((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算. 注意点: 1.在双括号结构中,所有的表达式可以像c语言一样,如a++,b-- 2.在 ...
- Shell case语法结构解析
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 ...
- Android触摸事件传递机制,这一篇就够了
整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制. 这个触摸事件就是从外层往内层一层层的传递. 整个传递机制,分为3个步骤:分发,拦截,和消费. 1. 触摸事件的类 ...
- Linq扩展方法获取单个元素
在使用Linq 提供的扩展方法时,First(OrDefault), Single(OrDefault), Last(OrDefault)都具有返回单个元素的功能.MSDN对这些方法的描述只有功能说明 ...
- [python之路]变量和字符编码
变量和字符编码 #变量##声明变量```#_*_coding:utf-8_*_ name = "Tom"```上述代码声明了一个变量,变量名为: name,变量name的值为:&q ...