Sar*_*els 5 .net c# unit-testing using-directives compile-time
在进行提交之前,我希望在我的C#解决方案中运行所有数百项单元测试,因为它们仅需花费几分钟即可运行。但是,如果我已经全部运行了,一切都很好,然后我决定using在我的解决方案中组织指令,是否真的有必要重新运行单元测试?我有一个宏,它遍历解决方案中的所有文件,并在每个宏上运行Visual Studio的“删除和排序”命令。以我的理解,只要using更改指令后仍在构建所有项目,则运行时也应该没问题。这是正确的想法吗?
嗯,这在一定程度上取决于您对“删除和排序”功能的信任程度。据我所知,顺序并不重要 - 但存在哪些指令可能很重要。
例如,假设您有以下扩展方法:
public static int Count<T>(this List<T> source)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果这是在命名空间中的类型中MyExtensions,并且原始代码是这样的:
using MyExtensions;
using System.Linq;
...
List<string> list = new List<string>();
int x = list.Count();
Run Code Online (Sandbox Code Playgroud)
那么删除第一个 using 指令不会对可见的编译器输出产生任何影响(即没有错误,没有警告),但它会改变调用哪个扩展方法。
现在我个人相信“删除和排序”实际上不会做出这样一个改变行为的改变,并且你必须有一些非常脆弱的代码才能开始......但我只是想我会提到“它之后仍然构建”实际上并不足以保证您的测试仍然有效。
就我个人而言,无论如何,我可能会再次运行测试,但同样,如果有必要,我也很乐意不这样做。正如 Finglas 提到的,如果您有一个持续构建系统,无论如何都会提醒您发生重大更改,那么偶尔出错的后果可能不会太灾难性。当然,如果您有成千上万的开发人员会因为签入损坏的代码而感到不便,那就是另一回事了。
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |