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



在init函数中使用相对路径时,我遇到了一个恼人的问题,单元测试找不到这个问题。

假设我有一个项目的结构如下:

.
├── conf
│   └── blacklist
├── filter
│   ├── filter.go
│   └── filter_test.go

filter.goinit函数中,我尝试使用相对路径conf/blacklist加载黑名单,以避免多次加载。由于默认的工作目录正是项目根目录,因此它可以很好地使用编译后的二进制文件。但是filter_test.go会惊慌失措panic: open conf/blacklist: no such file or directory,因为go测试总是使用包目录作为工作目录。

我还提到了这个解决方案,它可以动态构建相对路径来查找配置文件。在我添加covermode=set标志并尝试进行一些覆盖测试之前,它确实运行良好。似乎covermode会重写并生成一些类似_obj的中间包,这使得动态相对路径不再工作。

以前有人遇到过同样的问题吗?几个月来,我还是新来的。如有任何建议,我们将不胜感激。

一个简单的解决方案是使用类似SRC_ROOT=$PWD go test的东西运行测试,然后在测试内部使用os.Getenv("SRC_ROOT")访问文件。

相关内容

  • 没有找到相关文章

最新更新