【问题标题】:How to fix a lot of unit tests when results are changed结果更改时如何修复大量单元测试
【发布时间】:2015-03-13 07:14:55
【问题描述】:

我将 Visual Studio 与 Resharper 和 NUnit 测试框架一起使用。

有时业务逻辑代码中的一个小改动会破坏很多单元测试。没关系,您知道单元测试的结果会有所不同,并且新值现在有效。有没有办法快速修复所有问题?

【问题讨论】:

  • 为什么你还要在这么多单元测试中测试同样的东西?它们是单元测试还是集成测试?如果是前者,它不应该失败这么多。如果是这样,您将一遍又一遍地测试相同的东西。不要那样做。
  • 是的,你没看错,从这个角度来看,这个测试应该叫做集成测试
  • 我认为这更多是客户管理的问题,而不是代码问题。我的意思是,如果您实施了一个自动“更新预期值”程序,您将如何检查它?你的测试最终应该依赖于一个人说,“是的,这就是我们想要的结果”我建议你在电子表格中设置计算,你可以用它来产生大量的结果值并确认客户他们对他们很满意。然后导出为数据驱动单元测试的参数和预期结果的 csv
  • 我会非常警惕允许工具更新单元测试预期值。预期值应来自主题专家!

标签: c# unit-testing nunit resharper


【解决方案1】:

您可以使用 VS 附带的各种重构工具对代码进行(小)更改,这些更改不是业务逻辑更改的结果。这方面的示例是重命名变量和函数或将代码移动到不同的命名空间。 尤其是当您使用 ReSharper 时,有很多选项可以帮助您重构代码。 (Resharper 菜单 > 重构)。

如果您要更改应用程序的业务逻辑,那么软件需求肯定已经更改。因此,适用于该逻辑的单元测试应该失败,并且无法自动纠正此问题。

【讨论】:

  • 我说的是业务逻辑的变化。我之前写过所有这些测试,现在我们的客户说:“让我们将所有值增加 10%”,这破坏了我之前写的每一个测试。新值现在有效,但这不是业务逻辑的最后一次更改,我正在尝试找到在这种情况下修复测试的快速方法。
  • 好消息是你的单元测试工作得很好 :) 一般而言,要为此做好准备,如果它是一个可能的值,最好提取“增加 10% 的值”在未来改变。在单元测试的 Arrange 步骤中,您可以在所有单元测试中使用的方法中获取值。
  • “增加 10% 的价值”只是示例:)
【解决方案2】:

实际上没有快速修复期望值的解决方案。如果您的更改破坏了许多集成测试,则必须手动更正所有测试。

唯一的提示是最小化期望值的复制粘贴操作之间的距离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2015-04-11
    • 2021-12-20
    • 1970-01-01
    • 2020-05-20
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多