我的项目结构看起来像这样:

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/

有什么便捷的方法可以同时从runtest访问配置文件吗?

最佳答案

最后,我完成了更改配置文件加载方式的行为。以前,加载是通过config方法中打包的init()完成的。

取而代之的是,我创建了Load(path string)方法,该方法根据传递的path变量执行配置文件的加载。

现在,我像这样从main.go调用它:

config.Load("config/")

api_test.go像这样:
config.Load("../config/")

这不是一个很好的解决方案,但是在这种情况下,用户无需在运行测试时指定任何其他参数。

10-07 19:06
查看更多