c# - Xunit 的 App.config

标签 c# xunit.net

我正在写一些 xUnit测试一些依赖于某些配置设置的帮助类,通常存储在执行项目的 App.config 或 Web.config 中。

配置如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="FileNamePattern" value="\\d{8}_\\w{4:20}\.png"/>
    <!-- and the likes -->
  </appSettings>
</configuration>

我正在使用 GUI 运行器 (xunit.gui.clr4.exe) 和 xUnit 控制台运行器(在 Jenkins CI 服务器上)运行 xUnit 1.9。目前,我可以通过手动设置 xunit.gui.clr4.exe.config 和 xunit.console.exe.config 文件将这些配置值“注入(inject)”到测试环境中);然而,这是乏味且容易出错的。

我还可以在夹具中模拟这些配置设置。但是在 10 个不同的文件中使用相同的夹具是相当重复的。

是否有更好的方法来使用 xUnit 模拟这些配置设置,例如为测试项目提供 App.config 文件?

最佳答案

如果您的代码假设它们在 app.config 中,那么 xUnit.net 支持通过提供一个(通常当测试在 DLL 文件中时,这意味着您在项目输出中获取 AssemblyName.dll.config 文件,如果它在加载时存在,则运行程序将其作为设置加载)。

显然,首先使用 DI 原则删除此类依赖项没有什么害处,但我要说的是,在实际测试代码之前不要弄乱代码。

为了保持干燥,将 app.config 放在中央位置并将其添加为链接(通过对话框中“打开”按钮上的箭头)。 (是的,有很多不喜欢它的地方 - 只有当你觉得它是最不邪恶的方法时才使用它。)


需要注意的一件事是,更改不会在 GUI 运行器中重新加载,除非您要求重新加载程序集。

关于c# - Xunit 的 App.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720198/

相关文章:

c# - xUnit中如何设置测试用例顺序

visual-studio-2015 - Visual Studio 2015 测试资源管理器看不到 XUnit dnx 特征

c# - 如何从不继承自EventHandler的委托(delegate)创建IObservable?

c# - 我究竟应该如何使用异常?

unit-testing - 如何对 ActionFilterAttribute 进行单元测试

c# - 跳过 xUnit 测试

C# Active Directory,登录特定的 OU

c# - 如何在最终用户预览中使用 Roslyn 执行脚本

c# - 如何使用 OnStop 方法终止线程 (C#)

f# - 当项目文件将 AutoGenerateBindingRedirects 设置为 true 时,为什么我必须在 XUnit 规范中使用绑定(bind)重定向