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

2024-04-25

我有以下设置:

  • 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 http://web.archive.org/web/20100619012049/http://www.safnet.com/writing/tech/archives/2007/12/nunit_ignores_a.html。现在通过 NUnit GUI 运行测试时可以正确使用 App.config。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从通过单元测试项目调用的类库访问 App.Config 设置 的相关文章

随机推荐

  • Windows 7 上的 VirtualBox 端口转发不起作用

    Windows 7 上的 VirtualBox 端口转发不起作用 我尝试通过端口转发从我的 Windows 7 主机 ssh 到我的 VirtualBox 但 VirtualBox 不会打开端口进行侦听 我可以通过打开 VirtualBox
  • 如何在 Cocoa 中检查文件是否被锁定?

    有没有API可以检查文件是否被锁定 我在中找不到任何 APINSFileManagerclass 让我知道是否有任何API可以检查文件的锁定 我发现以下与文件锁定相关的链接 http lists apple com archives coc
  • 使用 MVC 和 DAO 模式在 JSP 页面中的 HTML 中显示 JDBC 结果集

    我正在使用 JSP 和 JDBC 实现 MVC 我已将数据库类文件导入到 JSP 文件中 并且想显示数据库表的数据 我不知道该如何归还ResultSet从 Java 类到 JSP 页面并将其嵌入到 HTML 中 我怎样才能实现这个目标 在设
  • 从命令行安装 Oracle 客户端,无需用户交互

    我正在寻找一种在 Windows 上安装 Oracle 客户端但从命令行运行的方法 为了自动运行它应有没有用户交互 对于 Oracle Universal Installer 的命令行选项 Oracle 文档非常稀疏 即使运行设置为setu
  • Golang 结构继承没有按预期工作?

    查看这个沙箱 https play golang org p elIHgHAZjT 声明从不同结构继承的结构时 type Base struct a string b string type Something struct Base c
  • 可以在没有 dynamoDB 的情况下使用 AWS App-Sync

    我对 Amazon app sync 的离线和同步功能感兴趣 但我想知道它是否可以在没有 dynamoDB 作为后端的情况下使用 用 VTL 为 dynamoDB 编写的 graphQL 解析器看起来很糟糕 看来使用 mongo 后端会好得
  • 是否可以在越狱的ios上使用外部键盘模拟触摸事件?

    是否可以在 iOS 越狱以及越狱涉及的所有元素上模拟特定屏幕坐标中的触摸事件 按下物理外部键盘 通过相机连接套件或蓝牙的 USB 上的特定按键 我会用它来用脚按下应用程序 振幅 中的按钮 我想使用键盘作为脚踏开关 仅供私人使用 没有应用商店
  • 如何使用 OData 在单个 POST 请求中正确创建和链接一对一关系

    在 OData Operations 文档的第 2 4 节第四段中 它写道 在使用 POST 创建实体时 也可以在同一请求中创建链接 但是 我在尝试完成这项工作时遇到了麻烦 在创建时就多对多链接提出了类似的问题 看起来如果没有批量请求 就不
  • 将 CVC 传递给 stripe.createPaymentMethod JS?

    我需要 CVC 和 Expiry 的单独输入 因此我创建了 3 个 Stripe 元素 let elements stripe elements let cardNumber elements create cardNumber cardN
  • 如何使用窗口函数优化SQL查询

    这个问题与this https stackoverflow com questions 32222889 how to calculate power consumption from power records 一 我有一个包含设备功率值
  • 在 LG WebOS 电视上启用开发者模式

    我正在 LG webOS 智能电视上开发一个简单的应用程序 由于我没能从 USB 驱动器运行我的应用程序 因此我尝试使用 Eclipse IDE 中的开发人员模式 事情是 我添加了一个新的目标配置 指向物理电视 IP 当我尝试连接时 需要密
  • 独特的柱组合

    这是我的简化数据集 foo lt data frame var1 c 1 10 var2 rep 1 5 2 var3 rep 1 2 5 var4 rep 3 7 2 总共 20 个变量 foo var1 var2 var3 var4 v
  • Saml 无 Cookie 保留状态 ASP.NET CORE

    var certbase env IsDevelopment AppDomain CurrentDomain BaseDirectory var pathpfx Path Combine certbase xxxxx pfx var pat
  • 在 Hudson 通知的电子邮件中提供最新测试结果信息

    我有一个项目 有很多测试失败 所以如果我能通过电子邮件收到最新版本的失败测试数量比较 那就太好了 我需要的只是测试结果链接显示在项目页面中的信息 最新测试结果 10 次失败 2 这可能吗 我已经尝试过 email ext 插件 但它并没有告
  • 允许对对象重新排序的算法,同时只需要更新恒定数量的对象位置

    我有一大堆对象 我希望根据它们的一个属性来保持顺序 作为一个例子 我们假设一个对象可能看起来像 var myObject id c 1 position 0 有序集合的简单实现如下所示 id c 1 position 0 id c 2 po
  • 将 Azure-AD 与 dotnet core 2 web-api 中的本地用户数据库结合起来

    我正在创建一个 net core2 web api 它允许 Azure AD 中的用户使用它 该 API 是多租户的 因此来自多个 Azure AD 的用户应该能够授权 但是 也可以为没有企业 Azure AD 帐户的用户创建帐户 这些用户
  • 当遵循单一活动设计时,如何隐藏底部栏导航?

    我试图仅在几个片段中显示底部栏导航 我将其隐藏在大部分片段中 我读了官方文件 https developer android com guide navigation navigation ui listen for navigation
  • 加载指示器页面在 XPages 中完全刷新

    我的 XPage 之一有很多设计元素 根据连接速度 页面加载时间超出预期 我想创建一个指示器来显示登录用户 页面正在加载 我将其用于部分刷新 效果很好 但我无法使其进行完全刷新 我一直在寻找解决方案 我可以尝试 jquery dojo 或
  • 如何在屏障处正确同步线程

    我遇到一个问题 我很难判断应该使用哪个同步原语 我正在创建 n 个在内存区域上工作的并行线程 每个线程都分配给该区域的特定部分 并且可以独立于其他线程完成其任务 在某些时候 我需要收集所有线程的工作结果 这是使用屏障的一个很好的例子 这就是
  • 从通过单元测试项目调用的类库访问 App.Config 设置

    我有以下设置 ASP net 3 5 网站项目 具有业务逻辑的 C 类库 用于单元测试的 C 类库 业务逻辑库完成所有数据库访问 它通过访问 System Configuration ConfigurationManager Connect