c# - DeploymentItem 属性的问题

标签 c# visual-studio unit-testing mstest deploymentitem

我目前正在维护一个用 C#.net 编写的“旧”系统,删除一些过时的功能并进行一些重构。感谢上帝,前一个人写了一些单元测试 (MSTests)。我对 JUnit 测试非常满意,但对 MSTest 的了解还不多。

测试方法有一个 DeploymentItem 属性,指定一个文本文件,该文件由被测试的业务逻辑方法解析,第二个 DeploymentItem 其中只有一个路径指定包含一堆必须部署的 TIF 文件。

[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
   ...
}

测试之前有效,但现在我不得不更改\files\tif 目录中包含的 TIF 文件的名称。根据规则,TIF 文件名必须匹配特定模式,该模式也由 ExistsTifTest() 方法检查。 现在我不得不更改文件名以使它们适应新的要求,突然之间,TIF 文件不再像以前那样部署。

有人能告诉我为什么会发生这种情况或者可能是什么原因吗?如果我在\files\valid\目录中的“valid_entries.txt”旁边添加一个新的文本文件说“my2ndTest.txt”,并且在测试方法上具有相应的 DeploymentItem 属性,也会发生同样的事情。文件未部署?

我现在通过直接在 testrunco​​nfig 中定义部署路径来部署图像,但我想了解为什么会发生这些事情,或者为什么我的新文件“my2ndTest.txt”没有部署,而其他文件做。

最佳答案

DeploymentItem 有点乱。

解决方案中的每个文件在 VS.NET 中都有一个“复制到输出文件夹”设置。您需要将其设置为“始终复制”(或类似的)才能将文件放入输出文件夹。

检查您是否为新文件准备了这组文件。如果您没有此设置,则文件不会被复制到输出文件夹,然后它们无法从输出文件夹部署到 MSTest 执行它的文件夹。

就我个人而言,如果我有单元测试所需的文件,我发现将这些文件作为资源嵌入到程序集中,并让该程序集在测试期间自行“解包”是一种更可预测的做事方式。 YMMV.

注意:这些评论基于我使用 VS2010 的经验。对我的回答的评论表明这不是 VS2012 的问题。我仍然支持以下评论,即使用嵌入式资源涉及较少的“魔法”,并且对我来说,使我的单元测试的“安排”阶段更加明确。

关于c# - DeploymentItem 属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/883270/

相关文章:

c# - MySql 中 EF5 的最小可用整数

c# Visual Studio ...以编程方式添加引用

unit-testing - 将模拟代码重构到另一个类中会导致 Spock 测试失败

java - 如何在 JUnitParams 参数提供程序中使用 Mockito stub ?

c# - RedisClient.Get<T> C# 与 ServiceStack.Redis 的性能

java - 如何验证列表中的元素是否按字母顺序排序

c# - 保存 Microsoft Azure Face API 数据

javascript - 如何删除index.html和karma中加载的脚本文件中的重复项?

c# - 集成到现有网站的最佳 c# wiki 是什么?

c# - ASP.NET MVC 在自定义脚手架中显示创建的文件