【问题标题】:How to avoid replicating configuration settings from web.config in unit tests如何避免在单元测试中从 web.config 复制配置设置
【发布时间】:2012-01-30 01:15:25
【问题描述】:

我有一个从 web.config 读取多个配置键的 Web 项目。这些设置与项目中实施的规则有关。当单元测试调用 web 项目中的模型类时,它最终会从单元测试项目中读取 app.config。所以我必须在单元测试项目中复制 app.config 中的键。将配置信息移动到web项目中的外部文件中是不是更好,以避免配置信息的复制?

提前致谢。

【问题讨论】:

    标签: unit-testing web-config


    【解决方案1】:

    在测试网络应用程序时,我最终会和你做同样的事情,将设置复制到测试项目的 app.config 文件中。这没有什么问题。

    替代方法是模拟将使用它们的配置设置,但这可能很麻烦,但这仍然是一种有效的方法。我倾向于保持简单并创建一个app.config 文件。

    【讨论】:

    • 我担心如果开发人员更改了实际 web.config 中的设置但忘记修改 app.config,即使不再测试单元测试也有可能继续通过实际代码。有什么办法可以防止这种可能性吗?
    • 如果您的团队中有人不就进行更改(即 web.config 文件)进行沟通,那么您将遇到更大的问题!只要每个人都对他们所做的改变持开放态度,那么就没有什么可担心的。
    【解决方案2】:

    我会使用返回这些设置的包装类。下面的例子

    public interface ISettingStorage
    {
        string GetSetting(string name);
    }
    
    public class SettingStorage : ISettingStorage
    {
        public string GetSetting(string name)
        {
            // read the actual setting from the web.config
        }
    }
    

    这样,您可以在单元测试中模拟 ISettingStorage 以返回您想要的任何值。由于没有磁盘 I/O,它还会稍微加快单元测试的速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多