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单元测试简述的更多相关文章

  1. ARTS-S golang单元测试

    golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittest f ...

  2. Golang单元测试框架整理

    目录 一.单元测试是什么 二.单元测试的意义 三.Golang单元测试框架 3.1 Golang内置testing包 3.1.1 简单的测试 3.1.2 Benchmark 基准测试 3.1.3 运行 ...

  3. golang单元测试

    使用testing进行单元测试 golang的测试库testing 测试文件与被测试文件在同一个包中 测试文件名为被测试文件名(去后缀)_test.go 测试用例函数以Test开头,TestFunc1 ...

  4. golang 单元测试

    单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率.所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解. go 语言 ...

  5. golang 单元测试&&性能测试

    一:单元测试 1.为什么要做单元测试和性能测试 减少bug 快速定位bug 减少调试时间 提高代码质量 2.golang的单元测试 单元测试代码的go文件必须以_test.go结尾 单元测试的函数名必 ...

  6. golang 单元测试(一)

    单元测试函数类型 Test(功能测试) 函数规则: 函数名: TestXxxx , 以Test为前缀.Xxxx以大写字母开头 参数类型: *testing.T func TestXxxx(t *tes ...

  7. golang单元测试一(简单函数测试)

    0.1.索引 https://blog.waterflow.link/articles/1663688140724 1.简介 单元测试是测试代码.组件和模块的单元函数.单元测试的目的是清除代码中的错误 ...

  8. 【GoLang】GoLang 单元测试、性能测试使用方法

    单元测试代码: ackage test import ( // "fmt" "testing" ) func Test_FlowControl(t *testi ...

  9. Golang 单元测试和性能测试

    开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早 ...

随机推荐

  1. 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! Spring Cloud Eureka 基于Netflix Eureka做了二次封装(Spring Clo ...

  2. emeditor安装及插件信息

    原文地址:https://www.52pojie.cn/thread-658917-1-1.html 废话不多说 官网:https://www.emeditor.com/download/ 安装版:6 ...

  3. 用自定义变量作为动作方法参数 URL路由 精通ASP-NET-MVC-5-弗瑞曼

  4. UVA A Spy in the Metro

    点击打开题目 题目大意: 在一个有n个站台的地铁线路里,给你列车通向每相邻两个车站所花费的时间,从0时刻开始,从1号站出发,要在T这个时间点上,到达n号站,给你m1辆从1开到n的列车及其出发时间,和m ...

  5. SpringBoot配置嵌入式Servlet容器

    1).如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCustomizer]): ...

  6. Mac系统 python2.7中安装MySQLdb

    由于要在python2.7上使用到MySQLdb连接数据库,所以要安装MySQLdb,也就是MySQL-Python.安装之前已经有人告诉我,这个东西比较难装,果然我也遇到好多问题,在百度找了半天,发 ...

  7. jmeter使用—响应断言

    断言的作用:一个HTTP请求发出去,怎么判断执行的任务是否成功呢?通过检查服务器响应数据,是否返回预期想要的数据,如果是,判断任务成功,反之任务失败. 1.添加断言:选中一个取样器,右键->添加 ...

  8. CUDA学习(七)之使用CUDA内置API计时

    问题:对于使用GPU计算时,都想知道kernel函数运行所耗费的时间,使用CUDA内置的API可以方便准确的获得kernel运行时间. 在CPU上,可以使用clock()函数和GetTickCount ...

  9. 编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理

    很久没有写过 .NET Core 相关的文章了,目前关店在家休息所以有些时间写一篇新的

  10. JDK的下载及安装教程图解(超详细哦~)

    一.本人电脑系统介绍及JDK下载途径 1.先说明一下我的电脑为win10系统,64位操作系统~ 2.我选择下载的JDK版本为1.8版本.给大家来两个下载渠道,方便大家的下载~ JDK官网:https: ...