1

假设您有一些使用语句的样板。说这样的话:

#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
#else
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
using TestContext = System.Object;
#endif

(这是我的单元测试代码)如果我不想把它放在每个有单元测试的文件的顶部,有没有办法在这里设置间接级别?

我认为这行不通,但这里有一个我在想的例子:

创建一个名为 NUnitCompatability.cs 的文件并将上面的代码放入其中。然后添加using NUnitCompatability到我所有的单元测试文件中。这适用于 Delphi,但不适用于 C#(我认为)。但是还有其他方法可以实现这种功能吗?

4

3 回答 3

4

不,这是不可能的。

您可能认为using指令类似于#includeC 中的指令。事实并非如此。

指令仅告诉编译器using在哪些命名空间中搜索特定文件中使用的类型。因此,您也无法将它们存储在单独的文件中。

我不会费心将条件编译器指令放在我的using指令代码中。在编译时几乎没有与未使用using的 s 相关的开销(搜索空间稍大),在运行时完全没有开销

于 2010-08-26T16:15:22.077 回答
2

如果您想将一组特定的 using 语句用于单元测试类,那么这似乎是专门为此目的制作新模板的好理由。您不限于 VS 提供的文件类型——您可以扩展它们以创建自己的文件类型,您可以在其中放置自己选择的 using 语句。在这里描述这个过程需要很长时间,所以在这里查看 MSDN:

http://msdn.microsoft.com/en-us/library/6db0hwky(v=VS.100).aspx

于 2010-08-26T16:25:02.180 回答
2

C# 中没有对此的内置支持。C# 预处理器故意是一个非常有限的工具,不支持#include样式操作,您可以将一个文件从两个文件中提取出来。

是的,对于像这样的非常简单的情况,这可能有点令人沮丧。但它超过了许多人使用 C++ 预处理器所做的并将继续做的坏事。

于 2010-08-26T16:19:36.313 回答