MSTest失败,并显示错误消息“结果文件不存在。发布失败'

时间:2012-04-10 11:11:51

标签: .net .net-4.0 msbuild tfs2010 mstest

我们正在使用TFS 2010来构建我们的解决方案并运行单元测试(MSTest)。所有单位测试都通过后,一切都工作正常,我们的构建成功。

但是,在将我们的测试项目更新为.Net 4之后,所有构建都会失败,并显示错误消息“结果文件不存在。发布失败'。即使所有测试都通过,也会发生这种情况。

我们尝试安装http://support.microsoft.com/kb/983504无济于事。

使用诊断日志记录运行MSTest会创建一个巨大的文件,但该日志不包含任何错误消息。我发现的唯一有趣的是

  

TestFormatsConverter.LoadAsCurrentVersion:< path_to_build> \ TestResults \ tfsservice_< service> 2012-03-28 09_51_49_任何CPU_Debug.trx已经是当前的文件格式。

我们尚未更新的旧解决方案仍然成功。

更新

在构建期间观察构建计算机上的构建文件夹后,我注意到在TestResults文件夹中未创建失败解决方案的.trx文件。对于旧解决方案,将创建该文件。 升级到.Net 4是否有可能导致.trx文件无法创建?

1 个答案:

答案 0 :(得分:3)

事实证明,毕竟这个问题已经解决了!

实际发生的是MSTest运行两次;一次使用MSTest 10,一次使用MSTest 9.第一次运行包括我们所有的.Net 4测试项目,并按照预期创建和发布测试结果。

但是,我们的源代码还包含一个名为Microsoft.Reactive.Testing.dll的.Net 2程序集,它包含在Reactive Framework(1.0.10621)的最新(.Net 4)安装程序中。 MSTest 10无法运行.Net 2测试,因此启动了另一个测试运行。

不幸的是,Microsoft.Reactive.Testing.dll仅包含在测试运行中,因为它的名称中包含“test”。它实际上不包含任何单元测试。因此,不会运行任何测试,也不会创建结果文件,也不会发布结果文件。

解决方案很简单:将.Net 2版本的Microsoft.Reactive.Testing.dll与.Net 4版本进行交换。这可以使用NuGet下载。