MSTest VS2010 - DeploymentItem将文件复制到不同计算机上的不同位置

Jac*_*ack 5 c# testing unit-testing mstest deploymentitem

我找到了DeploymentItem

[TestClass(), DeploymentItem(@"TestData\")]
Run Code Online (Sandbox Code Playgroud)

在构建测试并在不同计算机上运行时,不会将我的测试数据文件复制到同一位置.

测试数据文件被复制到我机器上测试项目的"bin\debug"目录中,但在我朋友的机器上,它们被复制到"TestResults\name_machine YY-MM-DD HH_MM_SS\Out".

我的机器上的bin\debug目录可以使用以下代码获得:

string appDirectory = 
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)

相同的代码将返回TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out我的朋友PC.

然而,这不是真正的问题.问题是我制作的测试数据文件有一个文件夹结构,这个文件夹结构只在我的机器上复制到bin\debug时保留,而在我的朋友机器上只有文件被添加到TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out目录中.这意味着测试将通过我的机器并失败!

有没有办法确保DeploymentItem始终复制到bin\debug文件夹?或者确保在DeploymentItem将文件复制到文件TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out夹时保留文件夹结构的方法?

Jac*_*ack 2

经过一段时间的尝试后,看起来最好的处理方法是确保为每个子目录添加一个新的 DeploymentItem,并确保指定“outputDirectory”,如下所示:

[TestClass(), DeploymentItem("TestData\\", "TestData"),
DeploymentItem(@"TestData\\SubDir\\", "TestData\\SubDir")]
Run Code Online (Sandbox Code Playgroud)

这允许测试在您的计算机上运行 - 希望这对某人有帮助!