第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

手摸手教你寫 Golang 單元測(cè)試

如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。[更多文章在我博客] coderdao.github.io

手摸手教你写 Golang 单元测试

不说废话, 先码为敬

表达从简单开始, 那么我们先举个例子:

预设需要 业务文件(被测试 的脚本)
图片描述

编写与之对应的 测试脚本
图片描述

接着进入 需要测试的 package 包目录路径, 运行 go test 命令

$ go test -v
=== RUN   TestMult
--- PASS: TestMult (0.00s)
PASS
ok      demo 0.006s

将启动当前路径下的所有测试用例(文件名以 _test.go 结尾); 添加 -v 参数可以查看测试用例详细运行信息

以上就是一个简约但完整的 单元(功能)测试用例

golang 测试命令

测试命令格式: go test [build/test flags] [packages] [build/test flags & test binary flags]

go test 命令会自动匹配指定路径下(默认为:当前路径)文件命名为 *_test.go包测试文件, 将被编译为单独的包,与主测试二进制文件链接并运行;

如何设置忽略文件夹、文件

名称以_(包括_test.go)或.开头的文件将会被忽略。
go 工具将忽略名为testdata的目录,使其可用保存测试所需的辅助数据。

Go 两种不同测试模式

本地目录模式

本地目录模式 发生在 go test 时,不带包参数调用(例如,‘go test’ 或 ‘go test -v’)。

在这种模式下, go test 编译包源并在当前目录中找到测试,然后运行结果测试二进制。
在这种模式下,缓存(下面讨论)被禁用。包测试完成后, go test 打印一个摘要行显示测试状态(‘ok’ 或 ‘FAIL’)、包名称和已用时间时间。

包列表模式

包列表模式 发生在在调用 go test 时带有显式包参数(例如“go test math”、“go test ./…”,甚至“go test .”)。在这种模式下, go test 编译并测试命令行上列出的每个包。

  • 如果一个包测试通过,go test 只打印最终的“ok”摘要线。
  • 如果包测试失败, go test 会打印完整的测试输出。
  • 如果使用 -bench 或 -v 标志调用,则 go test 打印完整的输出甚至通过包测试,以显示请求的基准测试结果或详细日志记录。

包测试缓存

仅在包列表模式下,go test 缓存成功的包测试, 避免不必要的重复运行测试。
测试的结果可以从缓存中恢复,go test 会重新显示之前的输出而不是运行测试二进制文件

再次。发生这种情况时, go test 打印 ‘(cached)’ 代替摘要行中的已用时间。当运行命令有添加参数:-cpu-list-parallel-run-short-v 测试结果将会被缓存。显式禁用测试缓存的常用方法是使用-count=1

为什么需要测试

Golang 自带 testing 测试包,调用它就能自动完成单元测试性能测试验证结果
而项目开发过程中完整的单元测试, 能够在 功能上线新环境部署 等常见业务场景, 大大提高发现、重现、定位问题 的效率。尤其是在大且复杂的项目中更是 减少线上故障、异常出现 的有效手段。

测试文件编写要点

  • 测试用例文件使用go test命令来执行,源码中不需要 main() 函数作为入口,所有以_test.go结尾的源码文件内以Test开头的函数都会自动执行。

测试类型、测试文件编写要点

Golang testing 包提供了 3 种测试: 单元(功能)测试性能(压力)测试覆盖率测试

共同的编写要点有:

  • 测试文件名必须以 _test.go 结尾
  • 测试文件需要导入 testing 包 import "testing"
  • 测试文件可以由 多个测试用例(函数)组成
  • 测试文件不会参与正常源码编译,不会被包含在可执行文件内

单元(功能)测试 go test -v

单元测试以Test 开头, (t *testing.T)作为参数,后面第一个字母必须大写(例如 TestAbc())

图片描述

性能(压力)测试 go test -bench="."

性能测试以Benchmark 开头, (t *testing.B)做为参数,后面第一个字母必须大写(例如 TestAbc())

图片描述

覆盖率测试 go test -cover

覆盖率测试 可以获知 测试程序 共覆盖 多少业务代码(也就是 demo_test.go 中测试了多少 demo.go 中的代码),最好是覆盖100%

$ go test -cover
PASS
coverage: 100.0% of statements
ok      demo 0.006s
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消