golang 如何判断当前是否是运行单元测试?

我们在go的模块化开发的时候,运行模块里面的单元测试时,当前整个模块的 init 函数都会被执行,在某些情况下我们运行独立的单元测试并不需要执行其他文件里面的init函数,这时就需要判断当前是否是在运行单元测试,判断方式很简单,只需要判断当前运行参数是否是以-test开始即可,if len(os.Args) > 1 && strings.HasPrefix(os.Args1, "-test") { } 。

完整判断代码如下:

Go 复制代码
func init() {

	// 如果是运行的单元测试,则跳过viper加载配置文件 避免找不到配置文件的异常
	// 单元测试 的情况下不加载viper配置
	if len(os.Args) > 1 && strings.HasPrefix(os.Args[1], "-test") {
		return // 当前运行当前测试,直接返回
	}
	    
   


}
相关推荐
zenithdev143 分钟前
fastcache:为 Go 设计的低 GC 压力内存缓存
开发语言·其他·缓存·golang
爱好曙光1 小时前
Go GMP调度器调优:CPU绑定与goroutine饥饿实战
性能优化·go·并发编程
北冥you鱼5 小时前
Go语言sync包在区块链开发中的数据同步实践
golang·centos·区块链
ckjoker6 小时前
23个测试全绿,一个Token没花——LLM应用的单元测试该怎么写?
单元测试·agent
景威6 小时前
写了个零依赖的 Go 版本管理器,curl | bash 完事,支持自动回退国内镜像
go
cocoCola916676 小时前
Go语言操作Redis
go
布朗克1688 小时前
Go 入门到精通-13-指针与内存
开发语言·c++·golang·指针与内存
xurime17 小时前
Excelize 开源十周年,发布 2.11.0 版本
golang·开源·github·excel·导出·导入·excelize·基础库
名字还没想好☜1 天前
Go 并发实战:用 channel 实现 worker pool
java·数据库·后端·golang·go
布朗克1681 天前
Go 入门到精通-09-复合类型之Map
开发语言·后端·golang·map