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