当单元测试的主机类型为“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"]);
}
}
}
如果有人能提供任何见解,我将不胜感激。
非常感谢,
Nick
我不确定它是否能完成这项工作,但您可以尝试此解决方法:使用文件映射打开配置。
代码如下所示:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = configurationFilePath;
System.Configuration.Configuration configuration =
ConfigurationManager.OpenMappedExeConfiguration(
fileMap,
ConfigurationUserLevel.None);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)