使用本地文件进行Golang测试

Mil*_*ler 7 testing mocking go

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

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

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

testing/...test_files_here
main.go
main_test.go
Run Code Online (Sandbox Code Playgroud)

然后从里面的内容中读取

testing/...
Run Code Online (Sandbox Code Playgroud)

谢谢

Jef*_*len 8

名为testdata的文件夹通常用于此目的,因为go工具会忽略它(请参阅go help packages).


Anf*_*nee 8

这是我当前的测试设置:

app/
   main.go
   main_test.go
   main_testdata

   package1/
     package1.go 
     package1_test.go 
     package1_testdata1

   package2/
     package2.go 
     package2_test.go 
     package2_testdata1
Run Code Online (Sandbox Code Playgroud)

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

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

vim package1_test_data1; go test app/package1