如何编写需要大量测试案例的Go测试

时间:2018-09-04 07:44:48

标签: unit-testing testing go

比方说,我有一个包含大约210000个英语单词的列表。

  • 我需要将所有210000个单词用作测试用例。
  • 我需要确保每次运行测试时都覆盖该列表中的每个单词。

问题是:在我的测试中存储这些单词的最佳实践是什么?

我应该将所有这些单词保存在一个片中(它是否会成为一个太大的切片?),还是应该将这些单词保存在一个外部文件(如words.txt)中,并在需要时逐行加载文件? / p>

1 个答案:

答案 0 :(得分:2)

测试数据通常存储在名为testdata的目录中,以使其与其他源代码或数据文件分离(请参阅命令go help test中的文档)。 go工具会忽略该目录中的内容。

210,000个字无论如何应该只占用单位兆字节的RAM,这并不多。只需具有一个帮助程序功能,该功能在每次测试之前(可能是将它们缓存)从文件中读取单词,或者定义一个TestMain()函数,该函数一次读取它们并将它们存储在全局变量中,以供随后运行的测试访问。

编辑:关于最佳做法,有时最好将测试数据存储在testdata中,即使数据不大也是如此。例如,有时我需要在测试用例中使用多个简短的JSON代码片段,也许不止一次使用它们。将它们存储在testdata子目录下适当命名的文件中,比散布带有一堆JSON代码片段的Go代码更具可读性。

在测试中,性能的轻微损失通常不是问题。哪种方法使代码更容易理解,都可能是“最佳实践”。