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. 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 ...

  2. [洛谷P4012] [网络流24题] 深海机器人问题

    Description 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生 ...

  3. python3小脚本-监控服务器性能并插入mysql数据库

    操作系统: centos版本 7.4 防火墙 关闭 selinux 关闭 python版本 3.6 mysql版本 5.7 #操作系统性能脚本 [root@localhost sql]# cat cp ...

  4. 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 ...

  5. 【Java并发基础】利用面向对象的思想写好并发程序

    前言 下面简单总结学习Java并发的笔记,关于如何利用面向对象思想写好并发程序的建议.面向对象的思想和并发编程属于两个领域,但是在Java中这两个领域却可以融合到一起.在Java语言中,面向对象编程的 ...

  6. Java8新特性一点通 | 回顾字符转日期&JoinArray使用

    StringToDate日期转换 Join Array使用 StringToDate日期转换 Convert string to date in ISO8601 format 利用LocalDate. ...

  7. 找python爬虫小项目?github给你准备好了!

    前言 即使我们都是程序员,但我们也并非都会修电脑,都会做酷炫的ppt,都会优化系统卡顿.其实程序员也是分行业.分专业的,就像医生也分内外科.呼吸科.神经科神的. 作为非专业的python选手,或者非专 ...

  8. 测试用例设计:PICT的安装及使用

    一.下载与安装 打开百度网页,搜索PICT,即可找到许多下载链接,点击这里,下载到桌面,点击安装.一直NEXT,安装路径保存在C盘: 二.PICT 使用 1.找到安装目录,即可看到以下内容 2.创建t ...

  9. Codeforces_814

    A.b序列从大到小填a序列中的0,在判断. #include<bits/stdc++.h> using namespace std; ],b[]; int main() { ios::sy ...

  10. HDU 1251 统计难题 (Trie树模板题)

    题目链接:点击打开链接 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单 ...