【问题标题】:MSTest fails with error message 'Results file does not exist. Publish failed'MSTest 失败并显示错误消息“结果文件不存在。发布失败'
【发布时间】:2012-04-10 11:11:50
【问题描述】:

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

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

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

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

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

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

更新

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

【问题讨论】:

    标签: .net .net-4.0 msbuild mstest


    【解决方案1】:

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

    实际发生的是 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”。它实际上不包含任何单元测试。因此,不会运行任何测试,不会创建任何结果文件,也不会发布任何结果文件。

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

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 1970-01-01
      • 2012-11-26
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多