我的项目结构看起来像这样:
project/
api/
api.go
config/
config.go
config.toml
tests/
api_test.go
main.go
因此,每当我初始化配置包时,我都会尝试使用相对路径
config/config.toml
读取配置文件。一旦运行程序,此方法就可以正常工作:
go run main.go
当我尝试运行测试时出现问题:
go test project/tests
。我的配置包找不到文件config/config.toml
,因为当前工作目录不是project/
,而是project/tests/
。有什么便捷的方法可以同时从
run
和test
访问配置文件吗? 最佳答案
最后,我完成了更改配置文件加载方式的行为。以前,加载是通过config
方法中打包的init()
完成的。
取而代之的是,我创建了Load(path string)
方法,该方法根据传递的path
变量执行配置文件的加载。
现在,我像这样从main.go
调用它:
config.Load("config/")
从
api_test.go
像这样:config.Load("../config/")
这不是一个很好的解决方案,但是在这种情况下,用户无需在运行测试时指定任何其他参数。