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