在初始化函数中使用相对路径时,我遇到了一个烦人的问题,而单元测试无法找到相对路径。
说我有一个结构如下的项目:
.
├── 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几个月了。任何建议将不胜感激。
慕的地10843
相关分类