我正在为遗留应用程序的输出编写一个解析器,由于没有关于文件语法的规范,我尽可能多地获取这些文件的样本.
现在我在实现解析器之前编写单元测试(因为没有其他理智的方法来执行此操作)但我不确定是否应该:
我倾向于使用第二种选择,因为我只测试我需要的东西,没有实际文件中包含的所有"真实世界"数据,但我担心我可能忘记测试一种或另一种可能性.
你怎么看?
我的建议是两者都做.编写一组集成测试,运行所有具有预期输出的文件,然后使用预期输入进行单元测试以隔离解析逻辑.
我建议首先编写集成测试,以便在外面编写解析器,可能会贬低看到一堆失败的测试,但它会帮助您更早地隔离边缘情况.
顺便说一句,我认为这是一个很好的问题.我最近遇到了类似的问题,它将大型xml提要从上游系统转换为专有格式.我的解决方案是为完整的feed编写一组集成黑盒测试,测试记录计数和其他高级别成功指标,然后将输入分解为越来越小的块,直到我能够测试数据的所有排列.只有这样,我才能很好地理解如何构建解析器.