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

时间:2010-05-27 20:34:39

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

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

3 个答案:

答案 0 :(得分:2)

嗯,这在一定程度上取决于您对“删除和排序”功能的信任程度。据我所知,排序并不重要 - 但是哪些指令存在可以很重要。

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

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所提到的,如果你有一个连续的构建系统提醒你无论如何都要改变,那么偶尔错误的后果可能并不是太灾难性的。当然,如果你有成千上万的开发人员因破损的代码而无法办理登机手续,那就不一样了。

答案 1 :(得分:1)

没关系。

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

答案 2 :(得分:0)

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