在写代码的时候需要访问某些文件,比如配置文件,在project/conf/xx.ini
我的main文件在project/src下
然后代码内直接使用相对路径./conf/xx.ini可以访问的到
然后写单元测试的时候,报错说找不到这个文件
比如单元测试在project/src/systom执行,我想了一下,应该是因为执行文件的当前路径发生了变化。
有什么好的办法,如果写绝对路径的话迁移部署太不方便了。比如go test后面可以加个参数指定下当前路径什么的?各位大神帮帮忙
在写代码的时候需要访问某些文件,比如配置文件,在project/conf/xx.ini
我的main文件在project/src下
然后代码内直接使用相对路径./conf/xx.ini可以访问的到
然后写单元测试的时候,报错说找不到这个文件
比如单元测试在project/src/systom执行,我想了一下,应该是因为执行文件的当前路径发生了变化。
有什么好的办法,如果写绝对路径的话迁移部署太不方便了。比如go test后面可以加个参数指定下当前路径什么的?各位大神帮帮忙
单元测试也要保证可移植性。要做到这点,最好就是将单元测试的依赖通过程序创建。比如你的单元测试依赖配置文件,那直接使用程序创建一个配置文件,测试结束就清除现场,把创建的文件删除就OK了。
思路的话
1、配置全局系统参数
2、通过执行命令时的外部参数,但是go test -args
和go run
、go build
的os.args
又有些冲突
3、将配置模块 写成“堆积木”一样 不要强依赖 应当和注册配置项一样
可以看下 聊一聊,Golang “相对”路径问题
今天刚好碰到这个问题,我的解决方案是用相对路径引用
conf/app.ini
project/src/systom_test.go 这里使用../../conf/app.ini访问
2 回答2.6k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
2 回答1.4k 阅读
1 回答1.8k 阅读
上面这个方法可以获取到当前这个函数(getCurrentPath)所在的*.go文件的目录,比如这段代码是放在a.go文件中的,那么调用getCurrentPath函数它得到的就是a.go这个文件所在的目录。