将静态文件从引用的项目复制到测试部署目录以进行单元测试

时间:2016-08-02 16:17:24

标签: c# unit-testing visual-studio-2015

我试图配置Visual Studio的内置测试运行器(msunit)将一些静态文件复制到输出目录,但到目前为止还没有成功。

静态文件驻留在所有其他测试项目引用的公共测试项目中。

是静态文件
Build Action: Content  
Copy to Output Directory: Copy always

构建每个测试项目时,静态文件将复制到\ bin \ Debug \目录,但是当测试运行并且msunit将所有内容复制到\ TestResults \目录时,不会复制这些静态文件。

将文件复制到输出目录

根据this MSDN page

  

在测试期间使其他文件可用,例如测试数据或   配置文件,将文件合并到项目中并进行设置   复制到输出属性。如果这不切实际,请部署   使用DeploymentItemAttribute创建其他文件或目录   关于测试类或方法。

依次提出这两个建议,第一个尝试没有成功......或者静态文件必须在每个的测试项目中吗?仅仅在引用的项目中使用它们是不够的?

至于DeploymentItemAttribute,我真的不想把它放在每个测试项目的每个测试类之上。

在原始位置运行测试

另一种选择是在原始位置运行测试,而不是部署到\ TestResults \目录,如果我能弄清楚如何配置,我很乐意这样做。

This MSDN page解释了如何配置测试的运行方式,尽管它是唯一描述* .runsettings文件的页面,但它的细节却很糟糕。例如,它提供了一个示例,其中<TestAdaptersPaths>元素包含虚拟值,但不解释它可以替换为什么。

此* .runsettings文件也无法解释是否可以在原始输出目录中运行测试。这是旧的* .testsettings文件可能实现的,但文档还说,* .testsettings文件只能用于传统模式,这种模式很慢而且不够健壮;虽然我可以在* .runsettings文件中指定一个* .testsettings文件,但我还必须强制测试在传统模式下运行。

所以似乎旧版本允许配置设置,表明测试不应该部署到另一个目录,但新版本不支持这个(或者不支持)它支持它的文件。)

使用xcopy

这是另一个MSDN page,其中建议定义构建后任务以将文件xcopy到位。我也试过这个,文件永远不会出现在部署目录中。

总而言之,我所尝试的一切都被证明是不能令人满意的。有人可以解释我如何告诉我的测试项目将静态文件从引用的项目复制到部署输出目录(首选),我如何配置测试以在其原始位置运行?< / p>

更新
我还要补充说,如果运行单独的测试方法,测试将在标准输出目录中运行(在项目的属性中指定,默认为&#34; bin \ Debug \&#34 )。在这种情况下,测试按预期运行,因为静态文件存在于标准输出目录中;如果运行多个测试(选择&#34;运行所有测试&#34;在项目或类级别),则测试从&#34; TestResults \&#34;下的唯一命名的部署目录运行。在后一种情况下,不复制静态文件。

此外,如果我使用[DeploymentItem("...", "...")]装饰测试类,则复制指定的文件 ,但是如果我使用相同的属性装饰公共类(用于数据库设置)(和也用[TestClass]装饰,然后指定的文件复制。

0 个答案:

没有答案