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 单元测试和性能测试
开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早 ...
随机推荐
- java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSession
java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSessio ...
- [洛谷P4012] [网络流24题] 深海机器人问题
Description 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生 ...
- python3小脚本-监控服务器性能并插入mysql数据库
操作系统: centos版本 7.4 防火墙 关闭 selinux 关闭 python版本 3.6 mysql版本 5.7 #操作系统性能脚本 [root@localhost sql]# cat cp ...
- FluentData -Micro ORM with a fluent API that makes it simple to query a database
Code samples Create and initialize a DbContextThe connection string on the DbContext class can be in ...
- 【Java并发基础】利用面向对象的思想写好并发程序
前言 下面简单总结学习Java并发的笔记,关于如何利用面向对象思想写好并发程序的建议.面向对象的思想和并发编程属于两个领域,但是在Java中这两个领域却可以融合到一起.在Java语言中,面向对象编程的 ...
- Java8新特性一点通 | 回顾字符转日期&JoinArray使用
StringToDate日期转换 Join Array使用 StringToDate日期转换 Convert string to date in ISO8601 format 利用LocalDate. ...
- 找python爬虫小项目?github给你准备好了!
前言 即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿.其实程序员也是分行业.分专业的,就像医生也分内外科.呼吸科.神经科神的. 作为非专业的python选手,或者非专 ...
- 测试用例设计:PICT的安装及使用
一.下载与安装 打开百度网页,搜索PICT,即可找到许多下载链接,点击这里,下载到桌面,点击安装.一直NEXT,安装路径保存在C盘: 二.PICT 使用 1.找到安装目录,即可看到以下内容 2.创建t ...
- Codeforces_814
A.b序列从大到小填a序列中的0,在判断. #include<bits/stdc++.h> using namespace std; ],b[]; int main() { ios::sy ...
- HDU 1251 统计难题 (Trie树模板题)
题目链接:点击打开链接 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单 ...