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

标签 c# .net testing

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

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

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

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

我问这个问题是因为我发现依赖于一个类(图表提供者)的多个测试可能存在问题。

谢谢。

最佳答案

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

这并不能避免依赖公共(public)源进行多个测试的风险,但您需要权衡定义每个图的构造的成本。您最终可能会在测试中得到大量重复的代码。重用给定的图形定义是否有好处;图工厂可能是前进的方向。

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

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

关于c# - 复杂的测试 - 依赖于相同的测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472689/

相关文章:

c# - 更新 MongoDb 中对象的所有属性

.net - 在 PNG 中使用 block

python - 我应该在 docker build 期间运行测试吗?

c# - 何时使用 Observable.FromEventPattern 而不是 Observable.FromEvent?

c# - Mjpeg VLC 和 HTTP 流媒体

.net - 如何将 .NET 控制台日志从 Azure 应用服务获取到 Azure 事件中心?

javascript - : "describe" and "it" coming from? 这个词来自哪里

c# - 您应该在哪里对验证进行单元测试?

c# - 如何在 asp.net core 中创建无限流端点

javascript - 如何让 Sinon.js 假服务器调用成功函数?