C# 为不再存在的功能添加单元测试

C# 为不再存在的功能添加单元测试,c#,unit-testing,software-design,C#,Unit Testing,Software Design,我们参与质量保证,作为该过程的一部分,我们对第三方开发公司编写的代码进行审查 其中一名团队成员对一些单元测试提出了意见,这些测试是在对现有代码进行功能更改后注销的。通常情况下,这是意料之中的,通常我们必须对未添加或更新的测试提出意见 所讨论的功能变化是完全删除2种方法。这并不是添加选择性逻辑的改变,这意味着它在某些场景中不会运行,它被完全删除了 讨论中的开发人员添加了单元测试,其中包括在WCF服务模拟上设置一个期望值,并断言它没有被调用 在某些方面,这是值得赞扬的,但在我们看来,单元测试是完全冗

我们参与质量保证,作为该过程的一部分,我们对第三方开发公司编写的代码进行审查

其中一名团队成员对一些单元测试提出了意见,这些测试是在对现有代码进行功能更改后注销的。通常情况下,这是意料之中的,通常我们必须对未添加或更新的测试提出意见

所讨论的功能变化是完全删除2种方法。这并不是添加选择性逻辑的改变,这意味着它在某些场景中不会运行,它被完全删除了

讨论中的开发人员添加了单元测试,其中包括在WCF服务模拟上设置一个期望值,并断言它没有被调用

在某些方面,这是值得赞扬的,但在我们看来,单元测试是完全冗余的,没有增加任何价值,因此提出了评论,并删除了测试。关于这一点的后续讨论最终作为实施后的讨论点出现在我的办公桌上

我倾向于同意,测试甚至不存在的代码有什么意义。你的底线在哪里?当然,如果你沿着这条路线开始,你需要做“一切”,但那是什么,它看起来像什么

反馈意见之一是,它被实现为负面测试,但对我来说,这仍然是为了测试现有的代码,只是试图通过传递意外参数来破坏它


对其他人的意见感到好奇。

你可以很好地支持此类测试,尤其是在与安全相关的场景中。
假设删除的方法意外公开,它们会打开一个安全漏洞。
删除它们很重要,如果它们再次出现,这将是一种倒退。换句话说:移除这些方法是修复安全漏洞的方式,因此,测试是有保证的


另一方面,如果通过删除这些方法没有修复任何问题(它们可能因为不推荐而被删除),则无需进行任何测试。

优点。所讨论的代码不是公共的,但确实发生在另一个公共方法的工作流中。基本上,它向另一个服务发送了2个请求,这些请求不再需要,因此被删除。因此,我们没有修复任何问题,只是“完全”删除了行为。这个问题属于Stack Exchange上的另一个站点: