您现在的位置是:网站首页> 编程资料编程资料
关于golang test缓存问题_Golang_
2023-05-26
421人已围观
简介 关于golang test缓存问题_Golang_
在使用vscode进行debug golang 时,出现test结果缓存的情况
导致若干次test结果一致问题
设置go test不用缓存
官方说明
https://pkg.go.dev/cmd/go#hdr-Test_packages
设置:
找到设置

找到test设置

添加"-count=1"

再进行run test就可以了
补充:下面再次介绍下go test 缓存
在执行go test的时候发现, 每次执行时间竟然一致, 然后发现是go test又缓存
Go test 支持两种模式:
1.Local directory mode, 在调用 go test 时,没有加参数 (比如 go test 或 go test -v)。在这种模式下,缓存会被禁用。 会编译当前目录下的代码和测试,然后运行测试二进制程序。
2.Package list mode,执行 go test时,指定文件路径 (比如 go test math, go test ./...)。在这种模式下,会编译并测试路径列出的每个测试文件。go test 会缓存成功的测试结果,以避免不必要的重复运行测试。当再次执行测试时,会检查缓存中对应的测试结果是否 OK, 如果 OK 会重新显示之前的输出,而不会运行测试二进制文件。此时 go test 会打印 '(cached)' 标识。
回过头来再看下项目的测试脚本:
CGO_ENABLED=1 go test -v --mod=vendor ./pkg/...
运行在 Package list mode, 所以单测通过后的二次测试, 会走 cache。
解决方案
有以下三种方式, 在测试中禁用缓存:
1.执行 go test 添加 --count=1 参数(推荐,效率高),以上面????例子:
CGO_ENABLED=1 go test -v --count=1 --mod=vendor ./pkg/...
2.Go 官方提供 clean工具,来删除对象文件和缓存文件, 不过这种方式相对麻烦:
go clean -testcache // Delete all cached test results
3.设置 GOCACHE 环境变量。GOCACHE 指定了 go 命令执行时缓存的路径,以便之后被复用。 设置 GOCACHE=off 即可禁用缓存。(go 1.12 之后,不能将其设置为off)
到此这篇关于golang test缓存问题的文章就介绍到这了,更多相关golang test缓存内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- 一文搞懂Golang中的内存逃逸_Golang_
- Golang实现多存储驱动设计SDK案例_Golang_
- Go 语言简单实现Vigenere加密算法_Golang_
- Go 并发编程协程及调度机制详情_Golang_
- LRU LFU TinyLFU缓存算法实例详解_Golang_
- Mango Cache缓存管理库TinyLFU源码解析_Golang_
- golang服务报错: write: broken pipe的解决方案_Golang_
- golang连接MongoDB数据库及数据库操作指南_Golang_
- go语言中for range使用方法及避坑指南_Golang_
- 详解如何利用GORM实现MySQL事务_Golang_
