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

时间:2018-07-30 08:19:31

标签: testing go

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

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

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

init的{​​{1}}函数中,我尝试使用相对路径filter.go加载黑名单,以避免多次加载。 由于默认的工作目录恰好是项目的根目录,因此它与已编译的二进制文件很好地兼容。但是conf/blacklist会惊慌 filter_test.go,因为go test始终使用package目录作为工作目录。

我还提到了this solution,它可以动态地建立相对路径来查找配置文件。在我添加panic: open conf/blacklist: no such file or directory标志并尝试进行一些覆盖率测试之前,它确实运行良好。似乎covermode=set会重写并生成一些covermode之类的中间包,这会使动态相对路径不再起作用。

以前有人遇到过同样的问题吗?我刚接触golang有几个月了。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

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