2012-08-26 50 views
9

表现不同我有我想要升级到VS2012 VS2010一个解决方案。DeploymentItem在VS2010和VS2012

我在用VS2012的MSTest的单元测试的问题。所有测试都包括测试类中的DeploymentItem属性。

[TestClass] 
[DeploymentItem(@"SubDir\SubDir2\models", "models")] 
public class UnitTests 
{ ... } 

2010年,它正确复制SolutionDirectory\SubDir\SubDir2\models目录中的相关文件。

在2012年,它试图从那里测试部署SolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models

我正在寻找一种方法来恢复旧的行为目录复制。

回答

1

安装vs2012后和.NET 4.5,貌似deploymentitemattribute是不同步的地方测试执行过程中的文件移动和位置的可执行文件查找文件。

便宜的解决方法:

  1. 离开deploymentitemattribute路径,是
  2. 看到该文件被移动到
  3. 更改测试代码在该位置

之前看这个升级版mstest足够聪明地查找部署项目,即使它们被移动到bin目录中的子目录。似乎不再是这种情况。

的升级线的单元测试代码可能看起来像这样所以才......

FileInfo fi = new FileInfo("temp.txt"); 

的升级线的单元测试代码可能是这样的......之后

FileInfo fi = new FileInfo("\SubDir\SubDir2\models\temp.txt"); 
+1

我明白你在说什么。不幸的是,我试图恢复的测试比“单元测试”更“集成”,并且二进制文件的路径在其他地方被硬编码。我的“廉价的解决方法”参与制作链接到文件的项目,并设定他们在构建复制,然后我修改了“DeploymentItem”属性,从构建目录拷贝。工程,但没有解决更大的问题。 –

4

如果你创建一个测试设置,在您的解决方案文件,(在测试设置默认的部署是关闭的)能够在它部署和测试资源管理器中选择它(测试 - >测试设置 - >选择测试设置文件),那么它应该在不更改代码的情况下工作。

+2

为我工作:) VS 2010项目VS VS 2012,没有复制我的测试数据,直到我做到了这一点。 – Cadab