复杂的测试-依赖于相同的测试数据

本文关键字:测试数据 测试 复杂 依赖于 | 更新日期: 2023-09-27 18:25:55

我正在开发自定义序列化程序作为业余项目,我想学习它的TDD。

我有一个串行化的测试&反序列化简单对象图。现在我想用非平凡的反序列化测试一些复杂的图(即没有无参数构造函数、循环引用、大量对象等的类)

我需要测试序列化的"构建"answers"提取"图,我需要测试串行化&已创建图的反序列化。我想用几个图来测试所有四个动作(从简单图到超复杂图)。

我应该创建一些非测试类,为所有测试提供预定义的图,还是每个测试都应该有自己的图源?

我之所以问这个问题,是因为我看到了在一个类(图的提供者)上依赖多个测试可能存在的问题。

谢谢。

复杂的测试-依赖于相同的测试数据

这里不一定有"正确"的答案;这取决于您的项目和测试。拥有一个通用的图源似乎是个好主意,不一定是一个单独的类,也可能是一组类(即图工厂/存储库),这些类可以生成表示不同概念的图(该类缺乏无参数构造函数、循环引用等)。

这并不能避免多个测试依赖于一个公共源的风险,但您需要将其与定义每个图的构建成本进行权衡。您可能会在测试中得到大量重复的代码。如果重新使用给定的图定义有好处;图形工厂可能是前进的方向。

一个想法可能是针对每个图进行元测试/一组元测试,以便确认图的有效性。关键是,如果一组使用同一个图的实际测试突然失败,您可以先查看元测试,并确保它们通过。您计划的每个测试都应该集中在一个方面(构建/提取等),然后这些测试可以依赖于图的有效性。

关键是要让每个测试尽可能简单,这样,如果/当它失败时,它就会明显地为什么失败——通过在其他地方构建图(并单独验证它),你可以让序列化测试专注于这一点。