如何编写需要大量测试用例的go测试

问题描述 投票:1回答:1

假设我有一个大约有210000个英文单词的列表。

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

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

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

unit-testing testing go
1个回答
2
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.