比方说,我有一个包含大约210000个英语单词的列表。
问题是:在我的测试中存储这些单词的最佳实践是什么?
我应该将所有这些单词保存在一个片中(它是否会成为一个太大的切片?),还是应该将这些单词保存在一个外部文件(如words.txt)中,并在需要时逐行加载文件? / p>
答案 0 :(得分:2)
测试数据通常存储在名为testdata
的目录中,以使其与其他源代码或数据文件分离(请参阅命令go help test
中的文档)。 go
工具会忽略该目录中的内容。
210,000个字无论如何应该只占用单位兆字节的RAM,这并不多。只需具有一个帮助程序功能,该功能在每次测试之前(可能是将它们缓存)从文件中读取单词,或者定义一个TestMain()
函数,该函数一次读取它们并将它们存储在全局变量中,以供随后运行的测试访问。
编辑:关于最佳做法,有时最好将测试数据存储在testdata
中,即使数据不大也是如此。例如,有时我需要在测试用例中使用多个简短的JSON代码片段,也许不止一次使用它们。将它们存储在testdata
子目录下适当命名的文件中,比散布带有一堆JSON代码片段的Go代码更具可读性。
在测试中,性能的轻微损失通常不是问题。哪种方法使代码更容易理解,都可能是“最佳实践”。