Go 单元测试中 testing 包的数据类型M/T/B/PB

这篇具有很好参考价值的文章主要介绍了Go 单元测试中 testing 包的数据类型M/T/B/PB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

testing.M 对main方法进行的测试
testing.T 对函数/方法进行单元测试
testing. B 对性能进行的测试
testing.PB -

执行测试

命令 作用
go test 【包名】或 go test . 运行当前package内的所有用例
go test ./… 或 go test 【目录名】/… 递归执行当前目录下所有用例:
go test -v [单元测试文件]. // 如 go test -v foo_test.go 运行指定文件单元测试
go test -v [单元测试文件] -run [单元测试函数]. 运行指定单元测试用例://如 go test -v foo_test.go -run TestFoo
go test -bench . 压测

执行单元测试时出现 调用函数 undefined 的解决方法:

如 执行 xj_test.go 下的TestXj函数,调用xj.go文件下的Xj函数

go test -v xj_test.go -run TestXj ———> 会出现Xj函数undefined

更换,加上调用函数的文件:

go test -v xj_test.go xj.go -run TestXj

testing.M

[Go]Go单元测试的前置和后置调用–TestMain - 掘金 (juejin.cn)

  setup()  // 运行前
	code := m.Run()  //运行运行测试。 它返回一个退出代码以传递给 os.Exit。
	teardown()  // 运行后
	os.Exit(code) //退出码

testing.T

对函数/方法进行单元测试

  • 常用

    t.Run() // 执行子单元测试
    t.Log() // 输出日志,t.Logf()
    t.Name() // 输出单元测试的名称
    t.Parallel() // 所有有t.Parallel()调用的单元测试 并行执行
    t.TempDir()  // 返回一个临时用于测试的目录地址,每次执行都不一样
    t.Cleanup() //  Cleanup 注册一个在测试(或子测试)及其所有子测试完成时要调用的函数。 清理函数将在最后添加,首先调用的顺序中调用
    t.Setenv()  // 设置测试环境变量,测试完成后自动清除,不能用于有t.Parallel()的测试函数
    t.Helper() // 用于标注该函数是帮助函数,报错时将输出帮助函数调用者的信息,而不是帮助函数的内部信息,比如A函数是公共函数,B,C都是测试函数,且都调用A函数,那么假设A报错了,那并不知道是B还是C调用,所以此时就需要在A函数内部加上次标注,让报错信息更准确,有助于定位。
    t.Fail() // 函数出现失败之后仍然执行
    t.Deadline() // 无
    
    func TestT(t *testing.T) {
    	t.Cleanup(func() {
    		// 将在所有子函数执行后执行
    		fmt.Println("测试Cleanup......")
    	})
    	t.Run("t.Fail()", func(t *testing.T) {
    		Expect(t).Equal(true, false)
    	})
    	t.Run("Setenv", func(t *testing.T) {
    		t.Setenv("xj", "chenxiaoji")
    		getenv := os.Getenv("xj")
    		t.Log("getenv:", getenv)
    	})
    	t.Run("v1", func(t *testing.T) {
    		name := t.Name()
    		t.Log(name)
    		dir := t.TempDir()
    		t.Log(dir)
    	})
    }
    
    
  • 判定失败接口

    • Fail 失败继续
    • FailNow 失败终止
  • 打印信息接口

    • Log 数据流 (cout 类似)
    • Logf format (printf 类似)
    • SkipNow 跳过当前测试
    • Skiped 检测是否跳过
  • 综合接口产生

    • Error / Errorf 报告出错继续 [ Log / Logf + Fail ]
    • Fatel / Fatelf 报告出错终止 [ Log / Logf + FailNow ]
    • Skip / Skipf 报告并跳过 [ Log / Logf + SkipNow ]

testing.B

  • 首先 , testing.B 拥有testing.T 的全部接口。
  • SetBytes( i uint64) 统计内存消耗, 如果你需要的话。
  • SetParallelism(p int) 制定并行数目。
  • StartTimer / StopTimer / ResertTimer 操作计时器
  • b.RunParallel(func(pb *testing.PB) {}) // 可以测试并发性能
type BenchmarkResult struct {
    N         int           // 迭代次数
    T         time.Duration // 基准测试花费的时间
    Bytes     int64         // 一次迭代处理的字节数
    MemAllocs uint64        // 总的分配内存的次数
    MemBytes  uint64        // 总的分配内存的字节数
}

testing.PB

其他

-test.short

go test -v ./… -test.short

代码中可以使用if testing.Short() {} 语句,能够检测go test命令行中有无-test.short,然后执行自己的业务代码(推荐是用来缩减单元测试的代码块)

参考资料

微信公众平台 (qq.com)

Go 单元测试中 testing 包的数据类型M/T/B/PB文章来源地址https://www.toymoban.com/news/detail-854780.html

到了这里,关于Go 单元测试中 testing 包的数据类型M/T/B/PB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang利用go mod巧妙替换使用本地项目的包

      拉了两个项目下来,其中一个项目依赖另一个项目,因为改动了被依赖的项目,想重新导入测试一下。   go.mod文件的require中想要被代替的包名在replace中进行一个替换,注意:用来替换的需要用绝对路径,一开始我用~/Documents/xboot/xboot/tools/reflect没有效果。   这样原

    2024年02月15日
    浏览(53)
  • 【Golang】认识Go语言中基本的数据类型

    目录 整形 基本整型  特殊整型 浮点型 布尔型 字符型 字符串转义符  多行字符串 字符串的常用操作 复数 我们不论在学习什么语言中,我们都要去认识一下这个语言中的数据类型,当然学习Go也不例外,我们也要去认识一下其相关的数据类型,当然这些数据类型基本上是大

    2023年04月08日
    浏览(45)
  • 100天精通Golang(基础入门篇)——第5天: Go语言中的数据类型学习

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月08日
    浏览(44)
  • Go 单元测试之Mysql数据库集成测试

    目录 一、 sqlmock介绍 二、安装 三、基本用法 四、一个小案例 五、Gorm 初始化注意点 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作,并且可以验证 SQL 语句的执行情况,非常适合用于单元测试中。 使用 sqlmock 进行 MySQL 数据库集成测试

    2024年04月17日
    浏览(40)
  • 仿真与测试:单元测试与Test Harness

    本文描述单元测试的概念,以及Test Harness建立的方法和简单的单元测试过程。 单元测试,简单来说就是在Simulink模型中只测试一小部分单元的功能。关于单元测试的概念网上有很多资料了,这里不再赘述。博主从实际工作经验的角度来谈谈单元测试的价值。 举个简单的例子,

    2024年02月04日
    浏览(46)
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或错误,特别是容易被忽视的边界情况。模糊测试的基本思路是在测试过程中生成大量的随机数,然后将这些数据输入

    2024年02月07日
    浏览(38)
  • Springboot Unit Test(单元测试)

    单元测试,是指对程序中的最小可测试单元进行验证,在Java中的话,就是类。其有两个目的: 验证程序实现的逻辑是否与设计的逻辑正确 在涉及到代码修改时,用单元测试去保证原有功能不被破坏, 而一个好的单元测试应该具备以下FIRST 原则和AIR原则中的任何一条: 单元

    2024年03月22日
    浏览(49)
  • Springboot的Test单元测试操作

    Springboot的Test单元测试操作 简单总结需要操作的步骤 1,导入依赖 2,创建目录(目录和启动类的目录保持一致) 3,添加注解 4,写方法测试 1,导入依赖 2,创建目录(目录和启动类的目录保持一致),并test目录绿色标记一下 3,添加注解 注意的是,这里的test的类路径impo

    2024年04月25日
    浏览(36)
  • SpringBoot单元测试(unit testing)

    目录 1.什么是单元测试? 2.单元测试的优点 3.关于单元测试框架 4.单元测试的实现

    2024年02月16日
    浏览(44)
  • 使用Simulink Test进行单元测试

    本文摘要:主要介绍如何利用Simulink Test工具箱,对模型进行单元测试。内容包括,如何创建Test Harness模型,如何自动生成excel格式的测试用例模板来创建测试用例,如何手动填写excel格式的测试用例模板来手动创建测试用例。 单元测试的目的 创建完模型后,我们需要验证模型

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包