我目前正在维护用C#.net编写的“旧”系统,删除一些过时的功能并进行一些重构。感谢上帝,前面的人写了一些单元测试(MSTests)。我对JUnit测试非常满意,但对于MSTests没有做太多的工作。DeploymentItem属性的问题
测试方法有一个DeploymentItem
属性,指定由正在测试的业务逻辑方法解析的文本文件,以及第二个只包含一堆必须部署的TIF文件的路径的第二个DeploymentItem
太。
[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
...
}
以前的测试工作,但现在我不得不更改\ files \ tif目录中包含的TIF文件的名称。根据规则,TIF文件名必须匹配一个特定的模式,这也由ExistsTifTest()
方法检查。 现在我不得不改变文件名以适应新的需求,突然间TIF文件不再像以前那样部署了。
有人可以给我一个提示,为什么出现这种情况或可能是什么原因?如果我在\ files \ valid \目录中的“valid_entries.txt”旁边添加一个新的文本文件,并在test方法中使用相应的DeploymentItem属性,则同样的事情也会发生。该文件没有被部署?
我通过直接在testrunconfig中定义部署路径,得到了现在部署的映像,但我想了解为什么会发生这些情况,或者为什么我的新文件“my2ndTest.txt”未部署,而别人呢。
这里的一个大问题是要认识到,DeploymentItemAttribute中指定的所有项目都将被复制到测试程序集运行所在的位置。换句话说,如果你希望它能保持你的目录结构,你将会失败。如果需要将其复制到特定目录,则使用两个参数DeploymentItem(source,outputDir)版本。仅供参考 - 您可以前往旧学校,通过将System.Console.WriteLine(System.Environment.CurrentDirectory)放入您的测试中来找出MsTest运行的文件的位置。 NCrunch没有这个问题! – CodeMonkeyKing 2013-11-01 22:39:43