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

C# 使用指令组织,重新运行测试?,c#,.net,unit-testing,compile-time,using-directives,C#,.net,Unit Testing,Compile Time,Using Directives,在提交之前,我更喜欢在我的C#解决方案中运行所有百余个单元测试,因为它们只需要几分钟的时间。但是,如果我已经全部运行了,一切都很好,然后我决定在我的解决方案中使用指令来组织,那么真的有必要重新运行单元测试吗?我有一个宏,它遍历解决方案中的所有文件,并在每个文件上运行VisualStudio的“删除并排序”命令。在我的理解中,只要所有的项目在使用指令之后仍然构建,那么在运行时情况也应该很好。这是正确的想法吗?是的。无需重新运行单元测试。使用指令的顺序对编译器来说无关紧要。这无关紧要 但就我个人而言

在提交之前,我更喜欢在我的C#解决方案中运行所有百余个单元测试,因为它们只需要几分钟的时间。但是,如果我已经全部运行了,一切都很好,然后我决定在我的解决方案中使用指令来组织
,那么真的有必要重新运行单元测试吗?我有一个宏,它遍历解决方案中的所有文件,并在每个文件上运行VisualStudio的“删除并排序”命令。在我的理解中,只要所有的项目在
使用
指令之后仍然构建,那么在运行时情况也应该很好。这是正确的想法吗?

是的。无需重新运行单元测试。使用
指令的顺序对编译器来说无关紧要。

这无关紧要


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

这部分取决于您对“删除并排序”功能的信任程度。就我所知,顺序并不重要——但存在哪些指令可能很重要

例如,假设您有以下扩展方法:

public static int Count<T>(this List<T> source)
{
    return 0;
}
然后删除first-using指令不会对可见的编译器输出产生任何影响(即没有错误,没有警告),但会更改调用的扩展方法

现在我个人相信“删除和排序”实际上不会做出这样的改变行为的改变,而且你必须从一些非常脆弱的代码开始。。。但是我想我应该提到,“它在以后仍然构建”实际上不足以保证您的测试仍然有效


就我个人而言,无论如何,我可能会再次运行测试,但同样,如果必要的话,我也很乐意不运行。正如Finglas所提到的,如果您有一个连续构建系统提醒您无论如何都要破坏更改,那么偶尔出错的后果可能不会太严重。当然,如果你有成千上万的开发人员,他们会因为检查坏代码而感到不便,那是另一回事。

看,伙计,这就是为什么我要问:我也一样偏执!如果构建了,为什么要重新运行?对于自动构建过程,如果要使用自动构建,任何更改(使用的重新排序也不例外)都会导致启动新构建。就个人而言,这是一件好事。至少你不会被贴上破坏构建的标签。另外,单元测试的好处之一是让您自信,从而在提交代码时避免偏执。如果重新运行单元测试消除了这种偏执,那就去做吧——有什么害处?;)我会重新运行这些测试,只是因为一旦你开始创建异常,就更容易在“哦,这是一个超级简单的更改”中进行破坏性的更改。测试然后始终提交,保持存储库处于工作状态值得进行一些额外的单元测试。好的,Visual Studio中的该命令使用指令重新排序
,并删除它认为不必要的指令。@Sarah:true。但我从未见过它犯错误,并删除一个我正在使用的。这是唯一的办法,它会打破。
using MyExtensions;
using System.Linq;

...
List<string> list = new List<string>();
int x = list.Count();