2008-09-30 25 views
11

为简单起见,我通常将很多配置(即app.config和web.config的内容)分割成单独的.config文件,然后使用'configSource'属性从主配置文件中引用它们。例如:如何使用MSTest单元测试项目使用“外部”配置文件(即使用configSource)?

<appSettings configSource="appSettings.config"/> 

,然后把所有的键/值对在appSettings.config文件,而不是在其主配置文件这行:

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

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

由于MSTest如何编译并将输出复制到与每次测试运行不同的混淆型文件夹(而不是像您可能认为的那样位于'bin'文件夹中),它似乎从未能够找到那些外部文件,而测试正在执行。我试图搞乱后构建行动,使这项工作,但没有运气。有没有办法在运行时将这些外部文件复制到正确的输出文件夹中?

回答

11

发现:

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

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

+4

请注意以下文件VS2008和VS2010之间改名为: “localtestrun.testrunco​​nfig”(.NET v3.5版本)和 “Local.testsettings”(.NET V4.0):HTTP:// social.msdn.microsoft.com/Forums/en/vststest/thread/1422bfb0-a637-430c-a2bf-0b199a02f013 – Ubikuity 2012-05-11 14:41:11

10

当试图在Visual Studio之外运行测试时,测试运行配置有点尴尬。

对于使用MSTest执行命令行来说,保持“干净”是非常麻烦的。 它们对解决方案也是“全球性”,所以外部文件将被复制用于每个测试项目。

我更喜欢DeploymentItem属性。

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

使测试独立于.testrunco​​nfig文件。

1
  1. 把这写在你的connectionString中。首先ConnectionString.config不存在。

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

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

  3. 在bin/debug文件夹中创建一个名称为ConnectionString.config的符号链接。

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

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

enter image description here

相关问题