使用本地文件进行测试

Testing using local files

我正在寻找在使用本地文件测试 Go 时应该使用的最佳实践。

通过使用本地文件,我的意思是为了测试功能,应用程序需要一些本地文件,因为应用程序经常从这些文件中读取。

我不确定是否应该在 运行 使用 ioutil 包 tempdir 和 tempfile 函数进行测试之前自己编写临时文件,或者像这样创建一个测试文件夹;

testing/...test_files_here
main.go
main_test.go

然后从里面的内容读取

testing/...

一个名为 testdata 的文件夹通常用于此目的,因为它会被 go 工具忽略(请参阅 go 帮助包)。

这是我当前的测试设置:

app/
   main.go
   main_test.go
   main_testdata

   package1/
     package1.go 
     package1_test.go 
     package1_testdata1

   package2/
     package2.go 
     package2_test.go 
     package2_testdata1

所有特定于单个包的测试数据都放在该包的目录中。将被多个包使用的公共测试数据要么放在应用程序根目录中,要么放在 $HOME.

这个设置适合我。更改数据和测试很容易,无需额外输入:

vim package1_test_data1; go test app/package1