Nat*_*end 2 c# unit-testing namespaces
我有一个单元测试项目,它反映了我的应用程序的目录和命名空间结构,除了单元测试项目将所有内容包装在Test命名空间中.所以这个类的测试:
MyModule.MyNamespace.MySubNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)
将在这个类中定义:
Test.MyModule.MyNamespace.MySubNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)
当我尝试创建常规(非单元测试)项目中定义的对象实例时,如果在单元测试项目中也存在同名的类,那么我在单元测试项目中遇到了问题.使用上面的示例,如果我MyClass使用其完全限定的类型名称在单元测试项目中创建类型的变量:
MyModule.MyNamespace.MySubNamespace.MyClass myobject = new ....
Run Code Online (Sandbox Code Playgroud)
编译器假定我指的MyClass是Test命名空间中定义的对象,并不将类型名称视为完全限定名称.
简单的解决方案是重构我的单元测试命名空间,但我很好奇是否有办法解决这个问题.我需要一些方法来"强制"编译器将类型名称视为完全限定 - 一种"突破" Test命名空间的方法.有没有办法做到这一点?
如果没有,是否有更好的约定来明确命名我的单元测试?
经过一些搜索,我遇到了global关键字,它告诉编译器假设类型名称是完全限定的:
global::MyModule.MyNamespace.MySubNamespace.MyClass
Run Code Online (Sandbox Code Playgroud)