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

测试方法有一个 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 执行它的文件夹。

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

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

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

10-13 06:19