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")
....

$GOPATH/src/mypkgテスト パッケージは、テスト バイナリの実行時にCWD が存在することを確認します。

于 2013-08-25T16:46:20.993 に答える