类库注册表更新方法可从控制台中工作,但不能从单元测试中工作
本文关键字:工作 但不能 单元测试 注册表 更新 类库 控制台 新方法 | 更新日期: 2023-09-27 18:04:35
当我从ConsoleApp调用它们时,我的类库中的以下方法工作正常。但是当我尝试对它进行单元测试时,注册表值没有更新。为什么?
我得到一个空引用错误。
namespace ClassLibrary1
{
public class Class1
{
public static void MyMethod()
{
string targketKey = @"SOFTWARE'MyApp1";
using (Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(targetKey, true))
{
rk.SetValue("target", "new value", Microsoft.Win32.RegistryValueKind.String);
}
}
}
}
在对你的代码进行了一些测试之后,我想我找到了你的问题所在。请试试这个:
- 确保
HKLM'SOFTWARE'MyApp1
密钥已创建 - 将类项目的目标平台从Any CPU更改为x64。
- 保持测试项目的目标平台为任意CPU
- 在菜单 中设置测试的默认架构为x64
测试>测试设置>默认处理器架构> x64
- 检查此代码
public static void MyMethod()
{
var rootKey = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
using (var existingKey = rootKey.OpenSubKey("MyApp1", true))
{
existingKey.SetValue("target", "double new");
existingKey.Close();
}
rootKey.Close();
}
我不明白为什么,但是如果你试图直接初始化existingKey
(没有rootKey
),那么它的值是null
。