怎么可能使用"外部"的配置文件(即与configSource)与MSTest单元试验项目?

StackOverflow https://stackoverflow.com/questions/152866

  •  02-07-2019
  •  | 
  •  

为了简单起见,我一般的分裂了我很多的配置(即内容的程序。配置和网络。config)出入独立的。配置文件,然后参照他们从主要的配置文件使用的'configSource'属性。例如:

<appSettings configSource="appSettings.config"/>

然后把所有的钥值对在于若.配置文件,而不是具有这个在行在主要的配置文件:

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

这通常伟大的工程应用程序本身,但是我碰到的问题时,尝试编写单元的测试,无论出于何种原因,需要得到一些价值从一个构成部分是存在一些外部文件。(我的理解是,大多数的这些会likley被认为是"集成试验",因为它们依靠的配置系统,我有"纯粹的单元的测试",以及,但这些是不该问题。我真的想要测试这些配值都是正确检索和影响的行为的正确方式)。

由于如何MSTest编译和复制出来的模糊看的文件夹不同,每一个测试运行(而不是'bin文件夹等你可能会认为),这似乎从来没有能够找到那些外部文件,同时测试的执行。我已经试过跟后建立的行动,使这项工作但是与未成功。有没有办法具有这些外部文件复制到正确的输出的文件夹在运行时间?

有帮助吗?

解决方案

发现它:

如果编辑的运行测试的结构(通过双击。testrunconfig的文件,该文件被放入解决方案的项目'的解决方案文件夹时添加一个新的单元试验),则获得一试运行配置的对话。有一部分有所谓的'部署在哪里,你可以指定的文件或整个文件夹,从任何地方的解决方案,可以复制出来的编制组件在运行时间正确的文件夹。

这样,我可以现在实际上只是定义了我的大部分配置在一个集外部。配置文件和具有自动复制出来的运行的每一个测试。

其他提示

试运行配置是一个有点尴尬时试图运行测试以外的Visual Studio.

为执行命令行使用MSTest他们成为相当烦琐,以保持"干净"。他们也是"全球化"的解决方案,使外部文件将复制为每一个试验项目。

我更喜欢的 DeploymentItem 属性。

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

使得测试的独立。testrunconfig的文件。

  1. 在connectionString中写下这个。第一个 ConnectionString.config 不存在。

    &lt;&quot;&quot; connectionStrings configSource =&quot; ConnectionString.config&quot;&gt; &QUOT;

  2. 以管理员权限打开命令提示符(CMD)。

  3. 在bin / debug文件夹中创建名称为 ConnectionString.config 的符号链接。
  4. C:\的Windows \ Systems32&GT; mklink&quot; C:\ Link To Folder \ .... \ ConnectionString.config&quot; “C:\ Users \ Name \ Original Folder \ ..... \ ... \ Secure ConnectionString.config&quot;

    最后它在指定位置创建ConnectionString配置文件。并且成功运作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top