iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言基础单元测试与性能测试示例详解
  • 241
分享到

Go语言基础单元测试与性能测试示例详解

2024-04-02 19:04:59 241人浏览 八月长安
摘要

目录概述单元测试代码说明如下问题注意性能测试基本使用自定义测试时间概述 测试不是Go语言独有的,其实在很多语言都有测试,例如:Go、Java、python… 要想成为一名合格的大牛,

概述

测试不是Go语言独有的,其实在很多语言都有测试,例如:Go、Java、python

要想成为一名合格的大牛,这是程序员必须具备的一项技能,特别是一些大公司,这是加分的一项,主要有如下优点:

代码可以随时测试,保证代码不会产生错误

写出更加高效的代码

单元测试

格式:func TestXXX(t *testing.T)


//add.go
package cal
func Add(num1, num2 int) int {
	return num1 + num2
}
//mul.go
package cal
func Mul(num1, num2 int) int {
	return num1 * num2
}

//add_test.go
package cal
import (
	"testing"
)
func TestAdd(t *testing.T) {
	sum := Add(10, 20)
	if sum != 30 {
		t.Log("10+20=", sum)
	}
}
func TestMul(t *testing.T) {
	sum := Mul(10, 2)
	if sum != 20 {
    t.Error("10 * 2 =", sum)
	}
}

运行结果如下:


//单元测试命令行
$ go test add_test.go add.go mul.go
ok      command-line-arguments  0.072s
$ go test -v add_test.go add.go
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
=== RUN   TestMul
--- PASS: TestMul (0.00s)
PASS
ok      command-line-arguments  0.070s
//运行指定单元测试用例
$ go test -v -run TestAdd add_test.go add.go mul.go
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
PASS
ok      command-line-arguments  0.072s

代码说明如下

第 1 行,在 go test后跟 add_test.go 件,表示测试这个文件里的所有测试用例。

第 2 行,显示测试结果,ok 测试通过,command-line-arguments 用例需要用到的一个包名,0.069s表示测试花费的时间。

第 3 行,显示在附加参数中添加了-v,可以让测试时显示详细的流程。

第 4-7 行,表示开始运行名叫 TestAdd TestMul 用例。

第 4-7 行,表示已经运行完 TestAdd TestMul试用例,PASS 表示测试成功。

第10行,表示运行指定的单元测试用例 主要加上-run 后面跟上你需要测试的函数(TestAdd)

问题

ok command-line-arguments (cached)

第一种:清除缓存 go clean -testcache

第二种:go test设置flags go test add_test.go add.go -count=1

注意

每个测试文件必须以 _test.go 结尾,不然 go test 不能发现测试文件

测试文件写在同一个包,方便测试和后期的维护

每个测试文件必须导入 testing

功能测试函数必须以 Test 开头,然后一般接测试函数的名字

testing.T 提供了几种日志输出方法

方 法 描述
Log 打印日志,同时结束测试
Logf 格式化打印日志,同时结束测试
Error 打印错误日志,同时结束测试
Errorf 格式化打印错误日志,同时结束测试
Fatal 打印致命日志,同时结束测试
Fatalf 格式化打印致命日志,同时结束测试

直接打印:Log Error Fatal

格式化打印:Logf Errorf Fatalf

性能测试

基本使用

格式:func BenchmarkXxx(*testing.B)


  //benchmark_test.go
    package cal
    import (
	"fmt"
    "testing"
  )
    func BenchmarkHello(b *testing.B) {
    	for i := 0; i < b.N; i++ {
    		fmt.Sprintf("hello")
    	}
    }

测试结果如下:


$ go test -v -bench="." benchmark_test.go
goos: windows
goarch: amd64
BenchmarkHello-4        20000000                93.7 ns/op
PASS
ok      command-line-arguments  2.061s

代码如下说明:

第 1 行 -bench="." 表示运行 benchmark_test.go 文件里面全部的测试,其实和-run一样【 -bench regexp 是可以接收一个正则,如果要运行所以的基准测试,请使用-bench. or -bench=.'.

第 2 行 goos 表示系统是 windows

第 3 行 goarch 表示 操作系统构架是amd64

第 4 行 BenchmarkHello-4 表示 测试名称 , 20000000测试的次数 , 93.7 ns/op表示表示每一个操作耗费多少时间(纳秒)

自定义测试时间

通过-benchtime参数可以自定义测试时间,例如:


$ go test -v -benchtime=2s  -bench=. benchmark_test.go
goos: windows
goarch: amd64
BenchmarkHello-4        30000000                85.1 ns/op
PASS
ok      command-line-arguments  2.714s

当你不设置-benchtime t时,默认值是1秒

testing.B 提供了几种方法【testing.B拥有testing.T的全部接口】

方法 描述
StartTimer() 启动计时
StopTimer() 停止计时
ResetTimer 重置计时
SetBytes() 设置处理字节数
ReportAllocs() 报告内存信息
runN(n int) 运行一个基准函数

go test里面还有很多的flags表示 例如:-parallel n -cover -vet list -parallel n

以上就是Go语言基础单元测试与性能测试示例详解的详细内容,更多关于Go语言单元测试性能测试的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Go语言基础单元测试与性能测试示例详解

本文链接: https://www.lsjlt.com/news/157472.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言基础单元测试与性能测试示例详解
    目录概述单元测试代码说明如下问题注意性能测试基本使用自定义测试时间概述 测试不是Go语言独有的,其实在很多语言都有测试,例如:Go、Java、Python… 要想成为一名合格的大牛,...
    99+
    2022-11-12
  • Go语言单元测试与性能测试示例分析
    这篇文章主要讲解了“Go语言单元测试与性能测试示例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言单元测试与性能测试示例分析”吧!概述测试不是Go语言独有的,其实在很多语言都有测试...
    99+
    2023-06-25
  • Go语言工程实践单元测试基准测试示例详解
    目录背景测试单元测试演示覆盖率依赖文件处理Mock基准测试小结背景 测试的出现是为了避免项目中出现重大事故 测试是避免事故的最后一道屏障 测试 单元测试的覆盖率在一定程度上而言,...
    99+
    2023-02-05
    Go语言单元测试基准测试 Go语言测试
  • Go 语言进阶单元测试示例详解
    目录前言测试单元测试规则示例assert覆盖率依赖Mock基准测试前言 本文从单元测试实践角度出发,提升对代码质量的意识。 本文内容主要包括:单元测试、Mock测试、基准测试。 测...
    99+
    2023-01-28
    Go 语言单元测试 Go 单元测试
  • Go语言单元测试的示例分析
    小编给大家分享一下Go语言单元测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单元测试分类及其概念1.基本分类测试函数 函数前缀为Test 主要用...
    99+
    2023-06-29
  • Go语言单元测试和基准测试实例代码分析
    本篇内容主要讲解“Go语言单元测试和基准测试实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言单元测试和基准测试实例代码分析”吧!背景测试的出现是为了避免项目中出现重大事故测试是...
    99+
    2023-07-05
  • Go语言单元测试超详细解析
    目录一、单元测试分类及其概念1.基本分类2.细说单元测试分类二、结合代码细说每一种测试1.基准测试2.组测试与子测试三、pprof调试工具1.对主函数进行传参2.pprof性能调优前...
    99+
    2022-11-13
  • C语言实现单元测试的示例详解
    目录前沿使用前提测试框架如下测试方法编写文件验证前沿 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际...
    99+
    2022-11-13
  • Go语言单元测试基础从入门到放弃
    目录Go语言测试go test工具单元测试函数格式单元测试示例go test -vgo test -run回归测试跳过某些测试用例子测试表格驱动测试介绍示例并行测试使用工具生成测试代...
    99+
    2022-11-13
  • Golang 单元测试和基准测试实例详解
    目录前言Go 单元测试单元测试覆盖率基准测试前言 多人协作的项目里,要保证代码的质量,自然离不开单元测试。开发完一个功能后肯定要对所写的代码进行测试,测试没有问题之后再合并到代码库供...
    99+
    2022-11-11
  • 一文详解Go语言单元测试的原理与使用
    目录前言为什么要引用单元测试类单元测试基本介绍优点Testing规范基本使用Golang运行命令行案例前言 为什么要引用单元测试类 传统方法的缺点分析 不方便,我们需要在main函数...
    99+
    2022-11-11
  • Go单元测试利器testify使用示例详解
    目录testifyassert 包require 包mock 包suite 包testify 在团队里推行单元测试的时候,有一个反对的意见是:写单元测试耗时太多。且不论这个意见对错...
    99+
    2022-12-15
    Go 单元测试testify Go testify
  • 前端自动化测试Vue中TDD和单元测试示例详解
    目录1、简单用例入门2、快照测试3、覆盖率测试4、结合 Vuex 进行测试1、简单用例入门 Vue 提供了 @vue/test-utils 来帮助我们进行单元测试,创建 Vue 项...
    99+
    2023-02-14
    Vue TDD单元测试 Vue 前端自动化测试
  • java理论基础Stream性能论证测试示例
    目录一、粉丝的反馈二、所有性能测试结论都是片面的三、动手测试Stream的性能3.1.环境3.2.测试用例与测试结论3.2.1.测试用例一3.2.2测试用例二3.2.3测试用例三四、...
    99+
    2022-11-13
  • 一文带你了解Go语言中的单元测试
    目录基本概念示例一:取整函数基本测试示例二:Fail()函数示例三:FailNow函数实例四:Log和Fetal函数基本概念 上一节提到,代码完成的标准之一还包含了单元测试,这部分也...
    99+
    2022-11-13
  • Golang单元测试与断言编写流程详解
    目录编写单元测试批量测试(test tables)执行测试性能测试配置计算时间断言(assertion)Go 在testing包中内置测试命令go test,提供了最小化但完整的测试...
    99+
    2022-12-14
    Go单元测试 Go断言 Go单元测试与断言
  • python性能测试手机号验证码登录压测示例详解
    目录引言业务逻辑:基本的校验规则如下:解决方案:测试方案:压测脚本:模块类方法:引言 这两天遭遇了手机号登录相关的压测需求,算是比较棘手的。主要原因有两个,第一:之前从来没有接手过这...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作