我的设置:
我注意到Microsoft.Win32.Registry
的所有静态属性(LocalMachine,CurrentUser等)在运行时在单元测试项目中都是null
。为什么会这样?
我使用单元测试项目模板创建了一个新项目。代码如下:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.Win32;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
RegistryKey key = Registry.LocalMachine;
}
}
}
构建项目后,我在RegistryKey key = Registry.LocalMachine;
行设置断点,然后使用调试器运行测试( Ctrl + R ,控制 + A )。
当断点被击中时,我调出立即窗口,键入Registry
并点击 Enter 。我最终得到了以下输出:
Microsoft.Win32.Registry base: object ClassesRoot: null CurrentConfig: null CurrentUser: null DynData: null LocalMachine: null PerformanceData: null Users: null
注意:我已阅读an article,其中指出单元测试不应触及系统。作者提供了有关访问注册表的包装和模拟代码的信息,我同意作者的推理。最终,这可能就是我要做的事情。
我仍然对这些属性为空的技术原因感兴趣。
干杯。
更新[2014-10-12] 我在管理员帐户下运行Visual Studio(我右键单击并以管理员身份运行)。
作为测试,我在同一个解决方案中添加了一个控制台项目,并将相同的代码添加到Main
方法中。我设置了一个断点,检查Microsoft.Win32.Registry
,前面提到的注册表属性不为空。