【问题标题】:No xunit tests discovered by vstest.console.exevstest.console.exe 没有发现 xunit 测试
【发布时间】:2014-12-25 02:46:48
【问题描述】:

我正在整理一组新的单元测试,作为 CI 作业一起运行。我使用 vstest.console.exe 而不是 mstest.exe 主要是因为它能够从多个框架运行测试,但现在重点是一些 xUnit dll。这些作业作为 Jenkins 管道的一部分运行。

我已经在几个开发盒上成功地测试了所有东西,但令人讨厌的是,到目前为止,测试发现在任何 CI 构建盒上都不起作用。这是在添加 0.99.8 xUnit 测试适配器 vsix(也使用 0.99.7 测试)之后。 xUnit dll 使用 2.0.0.2378 beta nuget 版本的 xUnit 针对 4.5 构建。

我已经用最简单的 dll 重现了这些症状,使用单一的公共测试方法,在我自己的盒子上运行良好,在任何构建盒子上都没有。部署环境非常简单,在 Windows 2012 上安装了 VS2012 和 xUnit 测试适配器。

我已经通过 vstest exe 配置文件启用了 TpTrace 日志记录,一切看起来都很好。我想我正在寻找一种方法来进一步解决问题(可能是跟踪 xUnit 发现过程)或解决问题的方法。为了方便运行多个框架,我更愿意保留使用 vstest 控制台。

我也通过xUnit codeplex 网站撰写了这个问题。

我已经查看了这个SO post,但这里没有任何建议的解决方案。

【问题讨论】:

    标签: c# unit-testing xunit.net vstest


    【解决方案1】:

    好的,问题解决了,但是经过一些令人沮丧的故障排除后,我将介绍它以防它对某人有用。问题是 xunit.execution.dll 在包含测试的 dll 所在的文件夹中不可用。这是 xunit 发现所必需的。我只是通过以下方式到达这里的:

    • 设置 HKCU\Software\Outercurve Foundation\xUnit.net\Visual Studio Test Plugin\MessageDisplay = 诊断(这应该可以通过 runsettings 文件实现,但没有被选中,并且不能通过 VS 工具选项 xunit 页面实现,因为打不开)
    • vstest 现在吐出“跳过 xunitTests.dll(不引用 xUnit.net)”
    • 此消息实际上意味着在文件夹中找不到 xunit.dll 和 xunit.execution.dll

    通过确保将 dll 复制到构建框上的该文件夹中来解决问题。

    【讨论】:

      【解决方案2】:

      我花了相当长的时间找到如何使用vstest.console.exe和xunit for VS2013的解决方案,所以我认为值得花时间在这里解释一下我是如何为大家做的......

      第一步是按照here 的说明在需要它能够从 Visual Studio 运行 xunit 测试的 xunit 项目中安装预发布版 xunit.runner.visualstudio nuget 包。

      然后,当您运行 vstest.console.exe 命令时,您必须使用参数 /TestAdapterPath

      您的命令行应该看起来像这样(xunit 适配器的路径在这里是相对的,因此您可以将其置于绝对路径或根据活动目录进行调整):

      "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:".\packages\xunit.runner.visualstudio.0.99.9-build1021\build\_common\"
      

      编辑:因为适配器 dll 被复制到输出文件夹,我们可以简化命令行,给出路径“。”到/TestAdapterPath 选项:

      "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:"."
      

      有关信息,它也适用于 NUnit、nuget 包 NUnitTestAdapter 和命令:

      "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:"."
      

      【讨论】:

      • 我的情况下xunit.runner.visualstudio.testadapter.dll没有被复制,你知道为什么吗?
      猜你喜欢
      • 2017-11-26
      • 2018-10-13
      • 2018-09-23
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 2017-12-10
      • 2017-12-28
      • 2017-04-25
      相关资源
      最近更新 更多