当我在Go中编写需要静态文件的测试时(例如文件hello.txt
我测试我的程序hello.txt
被正确读取),我应该在哪里放置静态文件?我该如何在测试文件中解决它们?
也就是说,目前我的设置是本地目录,GOPATH
设置为此目录。我有
src/
mypkg/
myfile.go
myfile_test.go
testfiles/
hello.txt
world.txt
现在在myfile_test.go
,我不想使用绝对路径来引用testfiles/hello.txt
。有没有惯用的方法呢?
这是一个合理的布局吗?
答案 0 :(得分:6)
通常的方法是,例如
$GOPATH/src/
mypkg/
myfile.go
myfile_test.go
_testdata/
hello.txt
world.txt
然后,在你的foo_test中,使用
f, err := os.Open("_testdata/hello.txt")
....
或
b, err := ioutil.ReadFile("_testdata/hello.txt")
....
测试包确保测试二进制文件执行时CWD为$GOPATH/src/mypkg
。