我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Go语言单元测试与性能测试示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Go语言单元测试与性能测试示例分析

这篇文章主要讲解了“Go语言单元测试与性能测试示例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言单元测试与性能测试示例分析”吧!

概述

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

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

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

写出更加高效的代码

单元测试

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

//add.gopackage calfunc Add(num1, num2 int) int {return num1 + num2}//mul.gopackage calfunc Mul(num1, num2 int) int {return num1 * num2}
//add_test.gopackage calimport ("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.gook      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)PASSok      command-line-arguments  0.070s//运行指定单元测试用例$ go test -v -run TestAdd add_test.go add.go mul.go=== RUN   TestAdd--- PASS: TestAdd (0.00s)PASSok      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.gogoos: windowsgoarch: amd64BenchmarkHello-4        20000000                93.7 ns/opPASSok      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.gogoos: windowsgoarch: amd64BenchmarkHello-4        30000000                85.1 ns/opPASSok      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语言单元测试与性能测试示例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Go语言单元测试与性能测试示例分析

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

下载Word文档

猜你喜欢

Go语言单元测试与性能测试示例分析

这篇文章主要讲解了“Go语言单元测试与性能测试示例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言单元测试与性能测试示例分析”吧!概述测试不是Go语言独有的,其实在很多语言都有测试
2023-06-25

Go语言单元测试的示例分析

小编给大家分享一下Go语言单元测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单元测试分类及其概念1.基本分类测试函数 函数前缀为Test 主要用
2023-06-29

Go语言中的性能测试与单元测试的区别

性能测试评估应用程序在不同负载下的性能,而单元测试验证单个代码单元的正确性。性能测试侧重于测量响应时间和吞吐量,而单元测试关注函数输出和代码覆盖率。性能测试通过高负载和并发模拟实际环境,而单元测试在低负载和串行条件下运行。性能测试的目标是识
Go语言中的性能测试与单元测试的区别
2024-05-08

Go语言单元测试和基准测试实例代码分析

本篇内容主要讲解“Go语言单元测试和基准测试实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言单元测试和基准测试实例代码分析”吧!背景测试的出现是为了避免项目中出现重大事故测试是
2023-07-05

Go 语言单元测试

php小编鱼仔今天为大家介绍一下Go语言的单元测试。在软件开发中,单元测试是非常重要的一环。通过编写测试用例,我们可以验证代码的正确性,提高代码质量和可维护性。Go语言提供了丰富的测试框架和工具,使得编写和运行单元测试变得更加简单和高效。本
Go 语言单元测试
2024-02-09

Go 语言进阶单元测试示例详解

这篇文章主要为大家介绍了Go 语言进阶单元测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-28

Go语言工程实践单元测试基准测试示例详解

这篇文章主要为大家介绍了Go语言工程实践单元测试基准测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-05

vue单元测试的示例分析

小编给大家分享一下vue单元测试的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!为什么要引进单元测试?现今时代,各种编程语言,开发框架,集成工具蓬勃发展,然而软件工程师们却仍然挣扎在第一线,被bug、遗留代码、技术
2023-06-14

Go语言中的性能测试与安全测试的关联

go语言的性能测试与安全测试密切相关。性能测试可测量应用程序的速度和资源消耗,可使用testing包编写基准测试和进行分析。安全测试旨在识别漏洞,go语言提供类型安全、垃圾回收和加密库等内置功能支持安全测试。性能测试可用于比较服务器实现的效
Go语言中的性能测试与安全测试的关联
2024-05-08

基于SpringBoot Mock单元测试的示例分析

小编给大家分享一下基于SpringBoot Mock单元测试的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Junit中的基本注解:@Test:使用该注解标注的public void方法会表示为一个测试方法;@Be
2023-06-25

Stream性能测试实例分析

本篇内容主要讲解“Stream性能测试实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Stream性能测试实例分析”吧!目录一、反馈问:stream比for循环慢5倍
2023-06-29

golang函数性能优化与单元测试

go 函数性能优化采用基准测试和性能瓶颈分析,优化方法包括切片优化等。单元测试可以通过编写测试用例和使用覆盖率工具完成,如测试切片拷贝函数。Go 函数性能优化与单元测试函数性能优化使用基准测试:import "testing"func
golang函数性能优化与单元测试
2024-04-28

java单元测试JUnit框架原理的示例分析

小编给大家分享一下java单元测试JUnit框架原理的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体如下:1 简介JUnit是一个Java语言的单元测试框架,它由 Kent Beck 和 Erich Gamma
2023-05-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录