testing - 在初始化函数中使用相对路径在测试中找不到
问题描述
在 init 函数中使用单元测试找不到的相对路径时,我遇到了一个烦人的问题。
假设我有一个结构如下的项目:
.
├── 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 总是使用包目录作为工作目录。
我还提到了这个解决方案,它可以动态构建相对路径来查找配置文件。在我添加covermode=set
标志并尝试进行一些覆盖测试之前,它确实运行良好。似乎covermode
会重写并生成一些中间包,例如_obj
,这使得动态相对路径不再起作用。
有没有人遇到过同样的问题?几个月来,我仍然是golang的新手。任何建议将不胜感激。
解决方案
一个简单的解决方案是使用类似的东西运行测试SRC_ROOT=$PWD go test
,然后在想要访问文件的测试中使用os.Getenv("SRC_ROOT")
.
推荐阅读
- r - R bsplus 包:bs_tooltip 不适用于 Shiny 中的 dateRangeInput/dateInput
- node.js - 如何从 ejs.file 中获取输入值的正确方法
- lua - Lua简单的鼠标按下宏
- ssrs-2012 - 从本地系统报告 SSRS 服务器配置错误
- angular - 将http调用的“异步结果”分配给“For循环”中的对象
- java - 当类删除对关联表的引用时,如何从关联表中删除行?
- jhipster - 我的 application-dev.yml 中指定的端口 8180 在我的 debian 服务器上已关闭
- jquery - translateX css 悬停效果
- java - 如何从 Maven 插件访问 Maven 占位符?
- javascript - 数据表服务器端:具有所有选项的下拉过滤器?