gpt4 book ai didi

c# - 当测试的主机类型为 "Moles"时无法从配置文件访问信息

转载 作者:行者123 更新时间:2023-11-30 17:14:07 26 4
gpt4 key购买 nike

当单元测试的主机类型为“Moles”时,我们在通过单元测试访问 .net 配置文件(例如 app.config 和 web.config)中的信息时遇到问题。这引起了很多头痛,所以我希望有人知道可以做什么。

我们使用的是 Visual Studio 2010,我相信我们已经在安装了 VS 2010 SP1 的机器和没有安装 SP1 的机器上进行了尝试,并且在 32 位和 64 位机器上进行了尝试。

我冒昧地将测试简化为最简单的术语。通过编写由以下两个文件组成的单元测试项目,并在取消注释唯一的注释行后运行测试,可以重现该问题。该测试在没有主机类型的情况下工作,但是当您将 Moles 作为主机类型引入时,测试中的 null 断言失败。我们不确定为什么。

一、配置文件App.config:

<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Connection" connectionString="Something" />
</connectionStrings>
</configuration>

接下来,包含单个测试的测试类:

namespace TestProject
{
using System.Configuration;
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class UnitTest
{

[TestMethod]
//[HostType("Moles")]
public void TestMethod()
{
var data = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Assert.IsNotNull(data.ConnectionStrings.ConnectionStrings["Connection"]);
}

}

}

如果有人能提供任何见解,我将不胜感激。

非常感谢,

尼克

最佳答案

我不确定它是否能完成这项工作,但您可以尝试这个解决方法:使用文件映射打开配置。代码将如下所示:

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = configurationFilePath;
System.Configuration.Configuration configuration =
ConfigurationManager.OpenMappedExeConfiguration(
fileMap,
ConfigurationUserLevel.None);

关于c# - 当测试的主机类型为 "Moles"时无法从配置文件访问信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com