2013-08-25 2 views
4

Когда я пишу тесты в Go, для которых требуются статические файлы (например, файл hello.txt, где я тестирую свою программу, которую правильно читает hello.txt), где разместить статические файлы? Как я должен обращаться к ним в тестовом файле?Статические файлы в тестах

То есть, в настоящее время моя установка является локальным каталогом, GOPATH установлен в этот каталог. Там у меня есть

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

Сейчас в myfile_test.go, я не хочу, чтобы использовать абсолютный путь для обозначения testfiles/hello.txt. Есть ли какой-либо идиоматический способ сделать это?

Разве это разумный макет?

ответ

5

Общий подход заключается в том, например

$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 при выполнении тестового двоичного файла.

+0

Чем больше я учусь, тем больше я вижу, сколько мысли было вложено в нее. – topskip

Смежные вопросы