【发布时间】:2010-10-27 08:44:45
【问题描述】:
我目前正在维护一个用 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 属性,也会发生同样的事情。文件未部署?
我现在通过直接在 testrunconfig 中定义部署路径来部署图像,但我想了解为什么会发生这些事情,或者为什么我的新文件“my2ndTest.txt”没有被部署而其他文件做。
【问题讨论】:
-
这里的一个大问题是要意识到 DeploymentItemAttribute 中指定的所有项目都将被复制到运行测试程序集的位置。换句话说,如果您希望它会保留您的目录结构,那么您将不走运。如果需要将其复制到特定目录,则使用两个参数 DeploymentItem(source, outputDir) 版本。仅供参考 - 您可以通过将 System.Console.WriteLine(System.Environment.CurrentDirectory) 放入您的一个测试中来找出 MsTest 文件的运行位置。 NCrunch 没有这个问题!
标签: c# visual-studio unit-testing mstest deploymentitem