C# UnitTest项目中的Microsoft.Win32.Registry字段为空
我的设置:C# UnitTest项目中的Microsoft.Win32.Registry字段为空,c#,unit-testing,visual-studio-2013,C#,Unit Testing,Visual Studio 2013,我的设置: Windows7专业版x64 适用于Windows桌面的Visual Studio Express 2013 .Net Framework v4.5 使用C# 我注意到,在单元测试项目的运行时,Microsoft.Win32.Registry的所有静态属性(LocalMachine、CurrentUser等)都是null。为什么会这样 我使用单元测试项目模板创建了一个新项目。代码如下: 使用系统; 使用Microsoft.VisualStudio.TestTools.UnitTe
- Windows7专业版x64
- 适用于Windows桌面的Visual Studio Express 2013
- .Net Framework v4.5
- 使用C#
Microsoft.Win32.Registry
的所有静态属性(LocalMachine、CurrentUser等)都是null
。为什么会这样
我使用单元测试项目模板创建了一个新项目。代码如下:
使用系统;
使用Microsoft.VisualStudio.TestTools.UnitTesting;
使用Microsoft.Win32;
命名空间UnitTestProject1
{
[测试类]
公共类UnitTest1
{
[测试方法]
公共void TestMethod1()
{
RegistryKey=Registry.LocalMachine;
}
}
}
构建项目后,我在RegistryKey=Registry.LocalMachine上设置了一个断点代码>行,我使用调试器(Ctrl+R,Ctrl+A)运行了测试
当断点被点击时,我打开即时窗口,键入Registry
并点击Enter。我最终得到了以下输出:
Microsoft.Win32.Registry
base: object
ClassesRoot: null
CurrentConfig: null
CurrentUser: null
DynData: null
LocalMachine: null
PerformanceData: null
Users: null
Microsoft.Win32.0注册表
基:对象
ClassesRoot:null
CurrentConfig:null
当前用户:空
达恩达:空
LocalMachine:null
性能数据:空
用户:空
注意:我已经读过,其中规定单元测试不应触及系统。作者提供了关于包装和模拟访问注册表的代码的信息,我同意作者的推理。最终,这可能是我要做的
我仍然对那些属性为空的技术原因感兴趣
干杯
更新[2014-10-12]
我使用管理员帐户运行Visual Studio(我右键单击并以管理员身份运行)
作为测试,我向相同的解决方案添加了一个控制台项目,并向Main
方法添加了相同的代码。我设置了一个断点,检查了Microsoft.Win32.Registry
,并且前面提到的注册表属性不为空。您是否在管理员帐户下运行Visual Studio?是的,我在管理员帐户下运行。我已经更新了我的帖子以包含这些信息。