在初始化函数中使用相对路径时,我遇到了一个烦人的问题,而单元测试无法找到相对路径。说我有一个结构如下的项目:.├── conf│ └── blacklist├── filter│ ├── filter.go│ └── filter_test.go在的init功能中filter.go,我尝试使用相对路径conf/blacklist来加载黑名单,以避免多次加载。由于默认的工作目录恰好是项目的根目录,因此它与已编译的二进制文件很好地兼容。但是filter_test.go由于被panic: open conf/blacklist: no such file or directory测试恐慌 ,因为go test总是使用package目录作为工作目录。我还提到了此解决方案,该解决方案可以动态构建相对路径以找到配置文件。直到我添加covermode=set标志并尝试进行覆盖测试之前,它的效果都很好。似乎covermode会重写并生成一些中间包,如_obj,这使得动态相对路径不再起作用。有人遇到过同样的问题吗?我还刚接触golang几个月了。任何建议将不胜感激。
1 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
一个简单的解决方案是使用类似的东西运行测试SRC_ROOT=$PWD go test
,然后在想要访问文件use的测试内部os.Getenv("SRC_ROOT")
。
- 1 回答
- 0 关注
- 266 浏览
添加回答
举报
0/150
提交
取消