6

当我在 Go 中编写需要静态文件的测试时(例如hello.txt,我测试程序hello.txt正确读取的文件),我应该将静态文件放在哪里?我应该如何在测试文件中解决它们?

也就是,目前我的设置是本地目录,GOPATH设置为这个目录。我有

src/
   mypkg/
        myfile.go
        myfile_test.go
testfiles/
          hello.txt
          world.txt

现在myfile_test.go,我不想使用绝对路径来引用testfiles/hello.txt. 有没有惯用的方法来做到这一点?

这是一个合理的布局吗?

4

1 回答 1

8

常见的方法是拥有,例如

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

于 2013-08-25T16:46:20.993 回答