9

我有一个 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

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

4

2 回答 2

4

如果您在解决方案中创建测试设置文件,请在其中启用部署(默认情况下,部署在测试设置中处于关闭状态)并在测试资源管理器中选择它(测试 -> 测试设置 -> 选择测试设置文件),那么它应该也可以在不更改代码的情况下工作。

于 2013-02-19T19:38:17.240 回答
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");
于 2012-08-28T17:18:23.653 回答