C# 复杂测试-对相同测试数据的依赖性

C# 复杂测试-对相同测试数据的依赖性,c#,.net,testing,C#,.net,Testing,我正在开发自定义序列化程序作为爱好项目,我想学习它的TDD 我对序列化和反序列化简单对象图进行了测试。 现在我想用非平凡的反序列化测试一些复杂的图(例如,没有无参数构造函数的类、循环引用、大量对象等…) 我需要测试序列化的“构建”和“提取”图,我需要测试所创建图的序列化和反序列化。我想用几个图(从简单的过复杂图到超复杂图)测试所有四个动作 我应该创建一些非测试类,为所有测试提供预定义的图形,还是每个测试都应该有自己的图形源 我问这个问题是因为我看到在一个clas(图形的提供者)上的多个测试可能存

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

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

我需要测试序列化的“构建”和“提取”图,我需要测试所创建图的序列化和反序列化。我想用几个图(从简单的过复杂图到超复杂图)测试所有四个动作

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

我问这个问题是因为我看到在一个clas(图形的提供者)上的多个测试可能存在问题

谢谢。

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

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

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

关键是让每个测试尽可能简单,这样,如果/当它失败时,它失败的原因显而易见——通过在其他地方进行图形构造(并单独验证),您可以让您的序列化测试专注于这一点和那一点