我正在写一些 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/