我的程序使用多个文件,如* .json,*。db
我该如何摆放?第一个变种:
project
|-> src
|-> main
| main.go
| main_test.go
|-> data
| database.db
|-> config
| config.go
|-> data
| config.json
...
或者:
project
|-> src
|-> main
| main.go
| main_test.go
|-> config
| config.go
...
|-> data
| database.db
| config.json
我更喜欢第二种变体,但在尝试编写测试时遇到麻烦。我尝试使用" / absolute / path",但它不起作用,因为它指向" ... / src / main /文件夹。
答案 0 :(得分:3)
go test命令将working directory设置为包含包源文件的目录。例如,配置测试在工作目录设置为project/src/config
:
使用测试中相对于该目录的路径:
第一个变体中的测试应该打开这样的文件:
f, err := os.Open("data/config.json")
if err != nil {
// handle error
}
第二个变种中的测试应该打开这样的文件:
f, err := os.Open("../../data/config.json")
if err != nil {
// handle error
}
(这里重点是相对路径,而不是使用os.Open)。