c# - 组织 using 指令,重新运行测试?

标签 c# .net unit-testing compile-time using-directives

在进行提交之前,我更喜欢在我的 C# 解决方案中运行所有数百个单元测试,因为它们只需几分钟即可运行。然而,如果我已经运行了它们,一切都很好,然后我决定组织using我的解决方案中的指令,是否真的有必要重新运行单元测试?我有一个宏,它遍历解决方案中的所有文件,并在每个文件上运行 Visual Studio 的“删除和排序”命令。据我了解,只要所有项目在 using 之后仍然构建指令改变了,在运行时也应该没问题。这是正确的想法吗?

最佳答案

嗯,这部分取决于您对“删除和排序”功能的信任程度。据我所知,顺序无关紧要 - 但存在哪些指令可能很重要。

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

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 所提到的,如果您有一个持续构建系统提醒您无论如何都要破坏更改,那么偶尔出错的后果可能不会太糟糕。当然,如果您有成千上万的开发人员因 checkin 损坏的代码而感到不便,那就另当别论了。

关于c# - 组织 using 指令,重新运行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924686/

相关文章:

reactjs - 如何使用 Jest 和 Enzyme 测试 ui-material TextField 的 onChange

c# - 创建一种更好的方法来根据用户角色过滤数据

c# - .NET 双重检查锁定中对 volatile 修饰符的需求

c# - javascript 函数没有被调用

c# - 如何在Windows phone 8 中通过Assembly.Load 动态加载程序集?

unit-testing - 单元测试 - stub SqlDataReader

unit-testing - 是否有用于使用 PowerShell 脚本测试 PowerShell 的单元测试框架?

c# - IsAssignableFrom 与 COM

c# - C#删除文件

.net - 在 SQL Server 上查询多个数据库