c# - 从通过单元测试项目调用的类库访问 App.Config 设置

标签 c# asp.net configuration nunit app-config

我有以下设置:

  • ASP.net 3.5 网站项目
  • 具有业务逻辑的 C# 类库
  • 用于单元测试的 C# 类库

业务逻辑库负责所有的数据库访问。它通过访问 System.Configuration.ConfigurationManager.ConnectionStrings 从网站的 web.config 文件中获取连接字符串。当网站调用该库时,它工作正常,因为该库会查找调用者的配置。

我希望能够通过单元测试类库来测试我的业务逻辑。我在测试类库的根目录下放置了一个 App.config 文件。据我所知,当测试库调用作为业务逻辑库一部分的数据访问过程时,应该访问和使用测试库的 App.config 文件中的连接设置。但是,当我尝试运行我的单元测试时,我收到错误消息,表明测试库的 App.config 文件(和/或其内容)未被成功访问。

我对配置属性的检索(从业务逻辑库中)如下所示:

public SqlConnection MainConnection {
  get {
    string conn = "";
    try {
      conn = System.Configuration.ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
    } catch {
      // might be calling from test project. Need to reference app settings
      conn = System.Configuration.ConfigurationManager.AppSettings["connString"];
    }
    return new SqlConnection(conn);
  }
}

当从网站项目调用它时,它起作用了。在单元测试中,conn 变量从未设置为任何值(我也尝试过 System.Configuration.ConfigurationSettings.AppSettings,并使用而不是得到相同的结果)。当从 NUnit GUI 中调用时,我需要做什么才能使业务逻辑类库成功检索单元测试类库设置?

最佳答案

我刚刚找到解决方案 here .通过 NUnit GUI 运行我的测试时,现在可以正确使用 App.config。

显然,如果您使用的是 NUnit GUI 并通过“项目”>“添加程序集”添加程序集,它不会访问 app.config。但是,如果您通过将 dll 从 Windows 资源管理器拖到 NUnit GUI 来将程序集添加到 NUnit 项目,那么它将访问 app.config。

或者,您可以通过 GUI 添加程序集,然后进入 NUnit GUI > Project > Edit,并将 Configuration File Name 设置为配置文件的名称(VS 会将其设置为 name.of.your。 dll.config) 并将 Project Base 设置为项目的\bin\Debug 目录(这些是在拖入程序集与手动添加程序集时在后台完成的额外步骤。

关于c# - 从通过单元测试项目调用的类库访问 App.Config 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318423/

相关文章:

iphone - 我可以在iPhone Simulator的配置文件中使用数据吗?

c# - C# 中的字典枚举

c# - 如何在 UTF-8 字节数组中找到字符串的起始索引? (C#)

c# - 来自 Windows 窗体控件的控制台输入

c# - 如何禁用 ASP.NET 的自动注销功能

c# - 模型中的 MVC Controller 列表未绑定(bind)

c# - 向导中动态加载的控件

facebook - 如何使用图形 API 将一个应用程序用于多个子域?

asp.net-mvc - 层次结构中的多个 AppSettings.config 文件

c# - UWP 将图像编码为 PNG