代码之家  ›  专栏  ›  技术社区  ›  Sarah Vessels

组织使用指令,重新运行测试?

  •  4
  • Sarah Vessels  · 技术社区  · 15 年前

    在提交之前,我更喜欢在我的C解决方案中运行所有的一百个单元测试,因为它们只需要几分钟就可以运行。但是,如果我已经运行了它们,那么一切都很好,然后我决定组织 using 指令在我的解决方案中,是否确实需要重新运行单元测试?我有一个宏,它遍历解决方案中的所有文件,并对每个文件运行Visual Studio的“删除并排序”命令。据我所知,只要所有项目在 使用 指令被改变了,运行时情况也应该很好。这是正确的想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jon Skeet    15 年前

    嗯,这部分取决于您对“删除和排序”功能的信任程度。据我所知, 排序 不重要-但有哪些指令 可以 物质。

    例如,假设您有这个扩展方法:

    public static int Count<T>(this List<T> source)
    {
        return 0;
    }
    

    如果它在命名空间中的类型中 MyExtensions 原始代码是:

    using MyExtensions;
    using System.Linq;
    
    ...
    List<string> list = new List<string>();
    int x = list.Count();
    

    然后删除第一个using指令对可见的编译器输出没有任何影响(即没有错误,没有警告),但它会更改调用的扩展方法。

    现在我个人相信“移除和分类”不会真正改变这种行为, 首先,你必须要有一些非常脆弱的代码…但是我只是想我会提到“它仍然是事后构建的”实际上不足以保证您的测试仍然可以工作。

    就我个人而言,无论如何,我可能会再次进行测试,但同样地,如果必要的话,我也会很乐意不进行测试。正如finglas所提到的,如果您有一个持续的构建系统提醒您无论如何都要破坏变更,那么偶尔出错的后果可能不会太糟糕。当然,如果有成千上万的开发人员会因为代码被破坏而不便签入,那就另当别论了。

        2
  •  1
  •   Finglas    15 年前

    这无关紧要。

    但就个人而言,在提交任何代码之前,我仍然会运行测试。

        3
  •  0
  •   Stephen Cleary    15 年前

    对。不需要重新运行单元测试。秩序 using 指令与编译器无关。