我应该使用实际或样本数据进行单元测试吗?

Lui*_*ron 6 unit-testing

我正在为遗留应用程序的输出编写一个解析器,由于没有关于文件语法的规范,我尽可能多地获取这些文件的样本.

现在我在实现解析器之前编写单元测试(因为没有其他理智的方法来执行此操作)但我不确定是否应该:

  • 使用应用程序生成的真实文件,从中读取并将输出与我将以json格式存储在另一个文件中的输出进行比较.
  • 或创建一个带有标记的示例字符串和我想测试的可能性以及带有预期输出的dict(这是python).

我倾向于使用第二种选择,因为我只测试我需要的东西,没有实际文件中包含的所有"真实世界"数据,但我担心我可能忘记测试一种或另一种可能性.

你怎么看?

jon*_*nii 7

我的建议是两者都做.编写一组集成测试,运行所有具有预期输出的文件,然后使用预期输入进行单元测试以隔离解析逻辑.

我建议首先编写集成测试,以便在外面编写解析器,可能会贬低看到一堆失败的测试,但它会帮助您更早地隔离边缘情况.

顺便说一句,我认为这是一个很好的问题.我最近遇到了类似的问题,它将大型xml提要从上游系统转换为专有格式.我的解决方案是为完整的feed编写一组集成黑盒测试,测试记录计数和其他高级别成功指标,然后将输入分解为越来越小的块,直到我能够测试数据的所有排列.只有这样,我才能很好地理解如何构建解析器.