登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-14 08:15:35 240浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《在测试中找不到 init 函数中使用的相对路径》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

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

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

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

filter.goinit函数中,我尝试使用相对路径conf/blacklist来加载黑名单,以避免多次加载。 由于默认工作目录正是项目根目录,因此它可以很好地与编译的二进制文件配合使用。但是 filter_test.go 会出现恐慌 panic: 打开conf/blacklist: 没有这样的文件或目录,因为go test总是使用package目录作为工作目录。

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

有人遇到过同样的问题吗?我对 golang 还陌生几个月。任何建议将不胜感激。


解决方案


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

以上就是《在测试中找不到 init 函数中使用的相对路径》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>