繁体   English   中英

单元测试用例调试时如何读取Web.Config文件?

[英]How to read Web.Config file while Unit Test Case Debugging?

我正在尝试从配置文件中获取数据(URL)

即:

<AppSettings>
<add key="configurationUrl" value="http://xx.xx.xx.xx:XXXX/configuration service/configurations"/>

使用以下代码

 reqClient.BaseAddress = System.Configuration.ConfigurationManager.AppSettings["configurationUrl"].ToString();

当我尝试调试它时,它的工作正常,但是当我调试一个调用上面相同代码的单元测试用例时,主要问题出现了,而不是在显示“TestProjectRetargetTo35Allowed”的APPSettings的AllKeys中显示“configurationUrl”。 我还在testcase项目中添加了web.config文件。

任何帮助将不胜感激谢谢。

我建议你创建一些抽象层来摆脱对ConfigurationManager的依赖。 例如:

public interface IConfigurationReader
{
    string GetAppSetting(string key);    
}

public class ConfigurationReader : IConfigurationReader
{
    public string GetAppSetting(string key)
    {
        return ConfigurationManager.AppSettings[key].ToString();
    }
}

然后你可以在你的单元测试中模拟这个界面。

一个简单的解决方法是简单地从.web项目复制web.config并粘贴到您的测试项目中,将其重命名为测试项目中的app.config。

这是非常糟糕的,因为单元测试不应该依赖外部依赖,但一定要修复!

@Jon_Lindeheim有最干净的方法,但是通过抽象到接口,这样你就可以在测试中存根返回值!

问题是您尚未为测试项目创建app.config文件。 您已经创建了一个web.config文件,但由于测试项目不是Web项目,因此完全被忽略了。

话虽这么说, @ Jon_Lindeheim绝对正确地ConfigurationManager之上引入一个抽象层。 ConfigurationManager是一个外部依赖项,这意味着您的单元测试不仅仅是测试SUT。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM