我正在开发自定义序列化程序作为业余爱好项目,我想在其上学习TDD。
我有序列化和测试的测试反序列化简单对象图。 现在我想测试一些具有非平凡反序列化的复杂图形(即没有无参数构造函数,循环引用,大量对象等的类......)。
我需要测试序列化的“构建”和“提取”图表,我需要测试序列化和&对已创建图形进行反序列化。我想用几个图表测试所有四个动作(从简单的复杂图形到超复杂图形)。
我应该创建一些非Test类,为所有测试提供预定义的图形,或者每个测试都应该有自己的图形来源吗?
我问这个问题是因为我看到dependecny在一个clas(图形提供者)上进行了几次测试可能存在问题。
感谢。
答案 0 :(得分:2)
这里没有一个“正确”的答案;这取决于您的项目和测试。 似乎有一个共同的图形来源是一个好主意 - 不一定是单个类,但可能是一组类(即图形工厂/存储库),它们可以生成代表不同概念的图形( class缺少无参数构造函数,循环引用等)。
这并不能避免依赖共同来源进行多次测试的风险,但您需要权衡定义每个图形结构的成本。你可能会在测试中得到大量重复的代码。如果重新使用给定的图定义有好处;图工厂可能是前进的方向。
一个想法可能是针对每个图进行元测试/元测试集,以便您可以确认图的有效性。关键在于,如果一组所有使用相同图形的实际测试突然失败,则首先查看元测试并确保它们正在通过。您正在计划的测试应该集中在一个方面(构建/提取等),然后这些测试可以依赖于图的有效性。
关键是要让每个测试尽可能简单,这样如果/当它失败时,显然为什么失败 - 通过在其他地方进行图形构建(并单独验证它),你可以得到你的序列化测试侧重于那个和那个。