如何使用“外部”配置文件(configSource IE)与MSTest的单元测试项目?(How c

2019-08-17 10:02发布

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

<appSettings configSource="appSettings.config"/>

然后把所有的键/值对的在appSettings.config文件,而不是在线路在主配置文件具有该组成:

<appSettings>
    <add key="FirstKey" value="FirstValue"/>
    <add key="SecondKey" value="SecondValue"/>
    ...
</appSettings>

这通常伟大工程与应用程序本身,但我试图写单元测试,无论出于何种原因,需要获取从存储在这些外部文件中的一个配置节一定的价值时遇到问题。 (据我所知,它们中的大多数likley被认为是“集成测试”,因为它们是依靠配置的系统上,并且我有“纯单元测试”吧,但那些都是没问题的。我真的很期待来测试这些配置值被正确地检索并以正确的方式影响行为)。

由于MSTest的如何编译和复印件输出到模糊的前瞻性文件夹是从每一个试运行(而不是在'bin文件夹像你想象的)不同,它似乎永远能够找到,而测试这些外部文件正在执行。 我已经试过搞乱与周围建立后的行动,使这项工作,但没有运气。 有没有办法有复制在运行时将正确的输出文件夹,这些外部文件?

Answer 1:

找到了:

如果编辑测试运行配置(通过双击当您添加一个新的单元测试被投入到“解决方案项”解决方案文件夹中的文件.testrunco​​nfig),你会得到一个测试运行配置对话框。 有一个有所谓的“部署”在那里你可以从任何地方可与编译的程序在运行时被复制了正确的文件夹的解决方案specifiy文件或整个文件夹部分。

这样一来,我可以现在实际上只是定义了我的大部分配置在一组外部.config文件,并让它们在每次测试运行自动复制出来。



Answer 2:

试图运行Visual Studio以外的测试时,测试运行配置是有点尴尬。

对于使用MSTest的命令行执行它们变得相当麻烦,保持“干净”。 他们也是“全球性”的解决方案,因此外部文件将被复制为每个测试项目。

我更喜欢DeploymentItem属性。

[TestMethod]
[DeploymentItem(@"test_data.file")]
public void FooTest()
{...}

使得测试不依赖于文件.testrunco​​nfig的。



Answer 3:

  1. 在你的connectionString写这篇文章。 首先ConnectionString.config是不存在的。

    < “的ConnectionStrings configSource =” ConnectionString.config “>”

  2. 打开命令提示(CMD)在管理员特权。

  3. 创建ConnectionString.config在斌/ debug文件夹名称的符号链接。

C:\ WINDOWS \ Systems32> mklink "C:\Link To Folder\....\ConnectionString.config" "C:\Users\Name\Original Folder\.....\...\Secure ConnectionString.config"

最后,它创建在指定位置的ConnectionString配置文件。 并成功地工作。



文章来源: How can you use “external” configuration files (i.e. with configSource) with an MSTest unit test project?