为了账号安全,请及时绑定邮箱和手机立即绑定

在测试中找不到在init函数中使用相对路径

在测试中找不到在init函数中使用相对路径

Go
狐的传说 2021-04-09 18:19:07
在初始化函数中使用相对路径时,我遇到了一个烦人的问题,而单元测试无法找到相对路径。说我有一个结构如下的项目:.├── 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")


查看完整回答
反对 回复 2021-04-19
  • 1 回答
  • 0 关注
  • 266 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信