.net - 如何在 MSTest 单元测试项目中使用 "external"配置文件(即使用 configSource)?

标签 .net unit-testing mstest

为简单起见,我通常将很多配置(即 app.config 和 web.config 的内容)拆分为单独的 .config 文件,然后使用“configSource”属性从主配置文件中引用它们。例如:

<appSettings configSource="appSettings.config"/>

然后将所有键/值对放在该 appSettings.config 文件中,而不是在主配置文件中内嵌:
<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

这通常适用于应用程序本身,但在尝试编写单元测试时遇到问题,无论出于何种原因,都需要从存储在这些外部文件之一中的配置部分获取某些值。 (我知道其中的大多数都可能被视为“集成测试”,因为它们依赖于配置系统,而且我也有“纯单元测试”,但这不是问题。我真的在寻找以测试这些配置值是否被正确检索并以正确的方式影响行为)。

由于 MSTest 如何编译并将输出复制到与每次测试运行不同的看起来很模糊的文件夹(而不是像您想象的那样复制到“bin”文件夹),它似乎永远无法在测试时找到这些外部文件正在执行。我试过搞乱后期构建操作来完成这项工作,但没有运气。有没有办法在运行时将这些外部文件复制到正确的输出文件夹中?

最佳答案

找到了:

如果您编辑测试运行配置(通过双击在添加新单元测试时放入“解决方案项”解决方案文件夹的 .testrunco​​nfig 文件),您将看到一个测试运行配置对话框。有一个名为“部署”的部分,您可以在其中指定解决方案中任何位置的文件或整个文件夹,这些文件或整个文件夹可以在运行时与编译的程序集一起复制到正确的文件夹中。

通过这种方式,我现在实际上可以在一组外部 .config 文件中定义我的大部分配置,并在每次测试运行时自动复制它们。

关于.net - 如何在 MSTest 单元测试项目中使用 "external"配置文件(即使用 configSource)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/152866/

相关文章:

node.js - 如何 stub Mongoose 模型保存*和*它的保存 Hook

.net - TFS 在构建服务器上不部署引用的程序集来测试目录

c# - 单元测试Unity配置文件 "The type name or alias xxxx could not be resolved"

.net - 通过Reflection.Emit生成可移植类库

c# - 检测 PNG 图像文件是否为透明图像?

android - 使用 Mockito 和 Firebase 进行单元测试

python - 如何针对 Django 数据迁移运行测试?

c# - 从对象列表生成字符串列表

c# - 类型直接或间接取决于自身 Simple Injector

visual-studio-2008 - 在 Mono 中运行 Visual Studio 2008 C#(基于 MSTest.exe)单元测试