GoLang之go test测试

article/2025/11/7 11:30:35

文章目录

  • GoLang之go test测试
    • 1.介绍
    • 2.函数
    • 3.测试函数格式
        • 3.1格式
        • 3.2失败示例
        • 3.3成功示例1
        • 3.4成功示例2
        • 3.5成功示例3
        • 3.6成功实例4
    • 4.基准函数
        • 4.1成功实例1
        • 4.2成功实例2
        • 4.3性能比较函数

GoLang之go test测试

1.介绍

Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具; go test 命令是go语言内置的命令

go test命令是一个按照一定约定和组织的测试代码的驱动程序
在我们执行了go tets命令之后,这个命令会自动的帮我们寻找当前包下面在包目录内以_test.go为后缀名的源代码文件进行测试,同时解析内部所有以大写的Test开头的测试函数(注:不会被go build编译到最终的可执行文件中)

2.函数

逻辑行为:比如举一些特例,来检查是否达到预期值

性能基准测试相当于调用10万次或者1万次,看看它的平均的执行时间、内存的是申请、内存的消耗等等

image-20220122105023440

3.测试函数格式

3.1格式

image-20220122105755751

3.2失败示例

如下结构以及代码内容

image-20220122112128564

image-20220122112228963

image-20220122112255426

注:执行完go test后,结构以及代码内容没有任何变化
一个中文所占的字节在uf8中至少占用的都是3个字节,甚至有的是4个字节,问题出现在:s = s[i+1:]这一行

3.3成功示例1

如下结构以及代码内容

image-20220122112805489

image-20220122112821945

image-20220122112939784

注:执行完命令后结构以及代码内容没有任何变化
go test:
显示pass,说明测试用例通过了

3.4成功示例2

如下结构以及代码内容

image-20220122121513221

image-20220122121525297

image-20220122121422666

注:执行完命令后结构以及代码内容没有任何变化
显示pass,说明测试用例通过了

3.5成功示例3

如果有多个测试用例的话,可以写成一个测试组,测试组里可以定义一个测试用例的结构体,然后分别的创建多个测试用例的结构体实例,然后写一个for循环去跑一下这个测试用例

image-20220122123445476

image-20220122123435067

image-20220122123354842

注:执行完命令后结构以及代码内容没有任何变化
go test
go test -v:
可以查看的更详细

3.6成功实例4

image-20220122123810870

image-20220122123743256

image-20220122123729249

image-20220122134857121

注:执行完命令后结构以及代码内容没有任何变化
用t.run的话,里面传入一个匿名函数的话,go test -v可以看的更清晰
go test -run=Split/chinese的换可以指定某个测试用例单独测试
go test -cover校验测试覆盖率(即比如我们的测试函数有6行代码,如果我们的测试用例把这6行代码都执行了,那么这是最好的了,覆盖率是100%,现实情况下很少有100%的情况,测试覆盖率基本上就足够了,

4.基准函数

4.1成功实例1

image-20220122142327030

image-20220122142349050

image-20220122141630263

image-20220122141922244

注:执行完命令后结构以及代码内容没有任何变化go test -bench=Split :(注意:所有的数据不同的电脑都不一样)
BenchmarkSplit-16:  -16是操作系统真正干活的进程数,不同的电脑不一样
1731301是指Spilt执行的次数
629.1ns是指:每一次操作耗费629.1纳秒go test -bench=Split -benchmem:   (注意:所有的数据不同的电脑都不一样)
查看操作的内存的数据
112 B/op: 每一次操作消耗的是112个字节
3 allocs/op : 每一次操作它会做三次的内存申请(通过看这个就可以来做代码优化,由测试来不断优化我们的程序),查看代码后发现原因是append会进行内存申请,现在的解决办法就是用make函数被做统一的内存申请

4.2成功实例2

image-20220122143112679

image-20220122143121749

image-20220122143159655

go test -bench=Split -benchmem:  (注意:所有的数据不同的电脑都不一样)
发现各个数据都减少了

4.3性能比较函数

应用场景:某些函数当我们传入的参数变量不一样的话,执行的次数也不一样,这种情景就可以用性能比较函数,比如


http://chatgpt.dhexx.cn/article/CagTAgpK.shtml

相关文章

Linux下使用Speedtest测试网速

Speedtest是用来测试网络性能的开源软件,在Linux下面安装Speedtest可以用来测试网络出口的上传和下载速度,帮助排查网络方面导致的故障。 Speedtest介绍 由于公司几个项目用户访问的时候响应较慢,项目本身没问题,服务及调用的接口…

@SpringBootTest注解进行单元测试

1、首先我们通过idea创建一个Springboot项目,项目目录生成后,默认都会带main和test目录,如下: 2、我们在test目录下创建测试类,正常情况下创建项目的时候会自带生成对应的测试类,如下: 此时你发…

C++Test使用入门

CTest使用入门 Parasoft Ctest 是一款自动化测试工具,是经广泛证明的最佳实践集成解决方案,它能有效提高开发团队工作效率和软件质量。 创建项目导入cpp文件生成测试用例添加桩函数运行测试用例 1.创建项目 填写项目名,Project type选择Em…

docker安装speedtest

平常测试网速的时候常用speedtest进行测试(测速网 - 专业网速测试, 游戏测速, 直播测速, 5G测速, 物联网监测-SpeedTest.cn),但是网站通常测试的是带宽的速度。内网速度的测试,一般通过传输大文件,查看稳定速率来计算速…

simulinktest

Smulink Test Notebook 序Subsystem Test使用Testharness对模型进行测试------------------------分割线-------------------------------------------- 序 Simulink Test 为模型的仿真,测试,验证和代码生成提供工具; 它包括Test Sequence&a…

Testbench编写指南(1)基本组成与示例

对于小型设计来说,最好的测试方式便是使用TestBench和HDL仿真器来验证其正确性。一般TestBench需要包含这些部分:实例化待测试设计、使用测试向量激励设计、将结果输出到终端或波形窗口便于可视化观察、比较实际结果和预期结果。下面是一个标准的HDL验证…

Device Self-test

DST Device Self-test命令Command CompletionDevice Self-test Operations (Optional)Short Device Self-Test OperationExtended Device Self-Test Operation Device Self-test命令 Device Self-test命令用于开始一个device self-test操作,或者中止一个device self…

Test ignored.

项目场景: springboot 问题描述: 创建单元测试执行后控制台输出: Test ignored. 解决方案: 测试文件路径与项目文件路径不一致造成的。

Shell test命令

概述 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 或者使用 [ ] 来判断 数值测试 #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等! elseecho 两个数不相等! …

Google Test简述

Google Test简述 Google Test 是由 Google 推出的 C 测试框架,具有稳定、跨平台、快速等特点,能够为 C 开发人员提供有效的单元测试和集成测试工具。Google Test 支持 Linux、macOS 和 Windows 操作系统,同时支持 gcc、clang 和 MSVC 等多种…

8051单片机基础4:数据存储类型(data,idata,xdata,code)

文章目录 存储类型使用方法详细说明8051存储器结构dataidatabdatapdataxdatacode 关于作者 参考来源:Keil > Help > uVision Help > Cx51 Compiler User’s Guide > Language Extensions > Memory Types 存储类型 Cx51编译器可以访问8051的所有存储…

安装xdata步骤

1.修改配置文件/etc/security/limits.conf 修改配置文件/etc/security/limits.conf 在该配置文件中添加: vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535修改之后重新SSH连接即可,不需要重启主机或服务 2. 禁用禁用SELINUX …

ObjectARX开发笔记(二)——使用Xdata向AutoCAD图形追加自定义数据

1.自定义数据 ObjectARX开发过程中,有时会使用自定义数据,主要包括: 自定义对象——可以让用户按照自己希望的方式封装数据,并向AutoCAD中添加第三方实体类型,这些实体类型用于与AutoCAD自身实体一样的特性&#xff…

matlab xdata ydata,matlab中set(head1,'xdata',x1,'ydata',y1)什么意思?

满意答案 amuese6418 2014.10.25 采纳率:59% 等级:12 已帮助:8722人 这个主要是set的用法 它是功能 设置对象的属性。 用法 set(H,PropertyName,PropertyValue,…) 用属性值PropertyValue设置关于用参量H 标志的对象(一个或多个)的属性名P…

用Proteus仿真C51时用到xdata时的问题

在用做一个程序,但是51的内存资源太过稀有,使用到较大的数组的时候资源很快就耗尽了,可能会遇到以下错误: src\main.c(195): error C249: DATA: SEGMENT TOO LARGE这时需要用到大模式下编译。 然而在proteus下默认xdata是必须加…

xdata,volatile,extern,static,#pragma 关键字

1. xdata xdata:声明的变量位于外部 RAM 地址范围内某一位置。 2. volatile volatile: 的本意是“易变的” ,因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化。当要求使用 volatile 声明变量值的时候&#…

51 单片机 data idata xdata 使用

51 单片机 data idata xdata 使用 简介 该篇文章只提使用,先不详细讲解,使用的原因就是自己写的代码 ROM 超了!!!新建工程默认使用 data Keil 配置如下图 测试芯片FlashRAMSTC15W408AS8Kbyte512byte data idata xd…

TMS XData 4.6.0.1 Full Source XE2-DX10.3

TMS XData 4.6.0.1 Full Source XE2-DX10.3 用于多层REST / JSON HTTP / HTTPS应用服务器开发和ORM远程处理的Delphi框架。 TMS XData功能概述 基于REST / JSON架构样式的服务器 由于它是基于REST / JSON的,因此可以轻松地从不同的客户端平台(如.NET,Jav…

10.扩展数据(XData)

愿你出走半生,归来仍是少年! 环境:.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. CAD中所有数据库对象都包含一个可以供开发人员进行自定义的对象:XDATA,本文主要针对此对象进行探索。 XDATA的使用中需要使用到部分DXFCOD…