如何关闭go vscode缓存
使用go test进行测试,没有修改测试代码的情况下, 重复多次测试,发现测试结果没有变化。如在外部修改了数据库,但是在go test查询mysql却显示之前的查询结果。参看:
1. 相关问题描述
使用go test进行测试,没有修改测试代码的情况下, 重复多次测试,发现测试结果没有变化。
这是因为测试并没有被实际运行,显示的是之前缓存的测试结果。从Go1.10开始,测试结果将被缓存,golang缓存测试结果这点在官方文档也能看到说明。见:https://golang.org/cmd/go/#hdr-Testing_flags说明。当go test以包列表模式运行时,go test会缓存成功的包的测试结果以避免不必要的重复测试。当你的测试代码没有变化的时候,它会显示缓存下来的测试结果。
附:根据测试结果来看,显示哪一次测试结果,是看你当前测试代码的签名,类似于map[代码签名]测试结果。如果你只是添加了几个字符,测试后又删掉,那么代码的签名和添加字符前一样,再次测试的时候还是显示的是之前的缓存。
2. scode 禁用 go test缓存
要禁用go test的缓存,需要添加参数:-count=1。那么go test的命令是这样子的:
go test -v -count=1 gofile_test.go
在vscode中添加步骤:
-
左下角打开设置
-
配置项搜索
go testFlags
-
选择工作区设置,如果需要全局设置禁用缓存的话,用户设置也需要重复同样的操作
-
添加参数
-count=1
(-v 的参数设置是测试时显示打印信息)
点击 Edit in settings.json, 在里面添加-count=1
: