ili*_*ian 70 .net asp.net unit-testing
我开始使用单元测试,我有一个方法,它使用web.config作为连接字符串.
我希望能够使用
[DeploymentItem("web.config")]
Run Code Online (Sandbox Code Playgroud)
为了获得Web配置文件,这仍然留给我空引用异常(这是我写下一个测试的).
如何使用我试图测试的项目中包含的配置文件?
我正在使用VS 2008中包含的测试框架,如果这有任何区别的话.
谢谢
Ger*_*nck 99
单元测试项目应该有自己的配置文件.
在测试项目中,您可以选择Add,New Item,Application Configuration File.
此文件的行为与web.config完全相同,但随后用于单元测试.
Ton*_*ony 12
您可以使用任何位置从web.config或app.config加载OpenMappedExeConfiguration
.确保System.Configuration
添加到项目的参考文献中.
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap()
fileMap.ExeConfigFilename = @"c:\my-web-app-location\web.config"
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
string connectionString = config.AppSettings.Settings["ConnectionString"].Value;
Run Code Online (Sandbox Code Playgroud)
这是web.config,非常标准.
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<appSettings>
<add key="ConnectionString" value="Data Source=XXXX;Initial Catalog=XXX; Trusted_Connection=True;"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
2017-09-29更新
我已经上了一堂课,可以更轻松地从文件中读取AppSetitngs.我从Zp Bappi那里得到了这个想法.
public interface IAppSettings
{
string this[string key] { get; }
}
public class AppSettingsFromFile : IAppSettings
{
readonly Configuration Config;
public AppSettingsFromFile(string path)
{
var fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = path;
Config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
}
public string this[string key]
{
get
{
return Config.AppSettings.Settings[key].Value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是如何使用该类.
IAppSettings AppSettings = new AppSettingsFromFile(@"c:\my-web-app-location\web.confg");
string connectionString = AppSettings["ConnectionString"];
Run Code Online (Sandbox Code Playgroud)
将web.config文件复制到"/ bin"文件夹并将其重命名为"AppName.dll.config".
其中"AppName" - 是生成的程序集的名称.
我多次使用这个黑客.
归档时间: |
|
查看次数: |
42722 次 |
最近记录: |