2012-04-10 90 views
2

我们使用TFS 2010来构建我们的解决方案并运行单元测试(MSTest)。所有的单元测试都通过了,所有的工作都很好,我们的构建成功了。MSTest失败并显示错误消息'结果文件不存在。发布失败'

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

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

使用诊断日志记录运行MSTest会创建一个巨大的文件,但日志中不包含错误消息。我觉得稍微有趣唯一的线是

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

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

更新

在构建过程中观察构建机器上生成文件夹之后,我注意到,发生故障的解决方案带有.trx文件未在TestResults文件夹中创建。对于旧的解决方案,该文件已创建。 是否有任何理由升级到.Net 4可能导致.trx文件不被创建?

回答

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下载。

相关问题