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 // 当前运行当前测试,直接返回
	}
	    
   


}
相关推荐
朋克洛德的码农7 小时前
Go并发-sync包四剑客:Mutex、RWMutex、WaitGroup、Once-从入门到原理
开发语言·后端·golang
圣殿骑士-Khtangc8 小时前
Go泛型编程实战从类型约束到泛型数据结构
golang
worxfr9 小时前
Go 底层心智模型:并发、内存与闭包
go
FfHUCisI10 小时前
Golang - 信号量模式(Semaphore Pattern)
开发语言·后端·golang
26519405112648011 小时前
08-告警并发与多Master同步
go·监控
报错小能手14 小时前
Go 语言结构 基础语法
开发语言·后端·golang
剩下了什么14 小时前
go语言 Ctx:「错误三:在 Context 中存储可变值」
开发语言·后端·golang
运维开发笔记15 小时前
3.7 Go panic 与 recover 学习笔记
golang
程序员爱钓鱼15 小时前
Go for 循环详解
后端·面试·go
JavaPub-rodert15 小时前
我把 OpenAI 协议塞进了 Go 工具库:go-commons 开始支持 AI 了
开发语言·人工智能·golang