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