2

我们正在使用 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_Any CPU_Debug.trx 已经是当前文件格式。

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

更新

在构建过程中观察构建机器上的构建文件夹后,我注意到未在 TestResults 文件夹中创建失败解决方案的 .trx 文件。对于旧解决方案,将创建文件。升级到 .Net 4 是否有任何原因可能导致 .trx 文件未创建?

4

1 回答 1

3

所以事实证明,这个问题毕竟有解决方案!

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

但是,我们的源代码还包含一个名为 .Net 2 的程序集Microsoft.Reactive.Testing.dll,它包含在 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 下载。

于 2012-04-13T12:26:00.453 回答