测试中的静态文件

top*_*kip 5 testing go

当我在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.有没有惯用的方法呢?

这是一个明智的布局吗?

zzz*_*zzz 6

例如,常见的方法是

$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测试二进制文件执行的时间.