.net 为什么Visual Studio 2015/2017/2019测试运行者没有发现我的xUnit v2测试

.net 为什么Visual Studio 2015/2017/2019测试运行者没有发现我的xUnit v2测试,.net,visual-studio,unit-testing,visual-studio-2015,xunit2,.net,Visual Studio,Unit Testing,Visual Studio 2015,Xunit2,更新:增加2019年;discovery/runner集成机制与2017年和2015年相同,因此可能出错的关键因素是相同的 我读过,但我的问题不同——我相信我的测试没有任何微妙之处;(他们在其他环境中工作过,这似乎只是我的机器)-Visual Studio 2015[社区版]中的Visual Studio测试运行程序根本没有显示我的任何测试。我没有做任何令人激动的事;测试的目标是桌面上的xUnit.net v2 我已经查看了输出窗口,但在显示来自选项卡的测试中根本没有看到任何内容 消除查询中的

更新:增加2019年;discovery/runner集成机制与2017年和2015年相同,因此可能出错的关键因素是相同的


我读过,但我的问题不同——我相信我的测试没有任何微妙之处;(他们在其他环境中工作过,这似乎只是我的机器)-Visual Studio 2015[社区版]中的Visual Studio测试运行程序根本没有显示我的任何测试。我没有做任何令人激动的事;测试的目标是桌面上的xUnit.net v2

我已经查看了输出窗口,但在显示来自选项卡的测试中根本没有看到任何内容

  • 消除查询中的发现例外情况;转到“输出”窗口(Ctrl-Alt-O),然后将“显示输出”下拉列表(Shift-Alt-S)切换到“测试”,确保没有发现异常

  • 测试|测试设置|如果您的测试是针对x86/x64的,并且发现触发了与比特相关的异常,即没有任何CPU,则默认处理器体系结构会有所帮助

  • 运行桌面控制台运行程序()可以很好地进行交叉检查,以消除其他可能性,例如:配置文件损坏:-

    packages\xunit.runner.console.2.2.0\tools\xunit.console

    注意
    xunit.runner.console
    软件包已被弃用-当您让东西在VS中工作时,您将能够让
    dotnet测试
    也在CI上下文中运行它们


  • -全面、最新,包括故障排除信息和PRs:-

    重要提示:如果您以前安装过xUnit.net Visual Studio Runner VSIX(扩展名),则必须先卸载它。Visual Studio runner现在仅通过NuGet分发。要删除它,请转到工具扩展和更新。滚动到列表底部,如果安装了xUnit.net,请卸载它。这将迫使您重新启动Visual Studio

    如果您在发现或运行测试时遇到问题,您可能是Visual Studio中运行程序缓存损坏的受害者。要清除此缓存,请关闭Visual Studio的所有实例,然后删除文件夹
    %TEMP%\VisualStudioTestExplorerExtrances
    。另外,请确保您的项目仅针对Visual Studio runner NuGet包的单个版本(
    xunit.runner.visualstudio
    )进行链接

    以下步骤对我有效:

  • (仅当您怀疑您的计算机上存在严重的混乱时-通常更常见的情况是visual studio集成尚未安装)

    按照建议执行
    DEL%TEMP%\VisualStudioTestExplorerExtrade
    :-

    PS>del$env:TEMP\VisualStudioTestExplorerExtensions

  • 在所有测试项目中安装NuGet软件包
    xunit.runner.visualstudio

    • 帕克特:

      .paket\paket add nuget xunit.runner.visualstudio -i
      
      您需要在您的
      paket.dependencies
      中包含以下内容:

      nuget xunit.runner.visualstudio版本路径:true

      请注意路径:true中的
      version\u位很重要

    • Nuget:转到包管理器控制台(Alt-T、N、O)并

    重建以确保
    xunit.runner
    在输出目录中结束


  • 关闭测试资源管理器我整个下午都在为ASP核心项目和xUnit 2.2.0而挣扎。我的解决方案是添加对
    Microsoft.DotNet.InternalAbstractions


    我在尝试使用
    dotnet test
    手动运行测试项目时发现了这一点,该测试失败,但报告缺少
    InternalAbstractions
    。当自动发现失败时,我在测试输出窗口中没有看到此错误。我在发现窗口中看到的唯一信息是一个返回码,它当时对我来说没有任何意义,但事后看来,这可能是一个错误。

    这在我身上发生过好几次——当我清理项目并重新构建它时,它往往会很好。

    对我来说,最常见的罪魁祸首是Visual Studio试图使用与它正在测试的库不同的体系结构来运行测试。不幸的是,在很多地方,这似乎会出错

    在VS 2017中,尝试在测试项目中创建运行设置文件,例如
    Default.runsettings
    。如果主库为x64,则内容应为:

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
      <RunConfiguration>
        <TargetPlatform>x64</TargetPlatform>
      </RunConfiguration>
    </RunSettings>
    
    
    x64
    
    然后从测试->测试设置->选择测试设置文件中选择此文件

    然后,在测试->测试设置,默认处理器架构下,再次选择正确的架构

    确保清理并构建整个解决方案。您可能需要关闭并重新打开“测试资源管理器”窗口。在Output->Test窗口中查找任何其他错误,以获取有关不正确架构类型的更多线索


    供参考,可以找到其他测试设置条目。

    上述解决方案均不适用于我(dotnetcore 1.1,VS2017)。下面是修复它的方法:

  • 添加NuGet包
    Microsoft.TestPlatform.TestHost
  • 添加NuGet 软件包
    Microsoft.NET.Test.Sdk
  • 这些是我之前安装的这些软件包的补充:

    • xunit(2.3.0-beta1-build3642)
    • xunit.runner.visualstudio (2.3.0-beta1-build1309)

    另一个原因可能导致Test Explorer不显示任何测试,这与Visual Studio 2017/for.NET Core引入的新的便携式
    .pdb
    文件格式有关,它可能会破坏一些VS工具。(背景:请参阅。)

    是否由于新的便携式
    .pdb
    (调试符号)格式而找不到测试?
    • 打开输出窗口
    • 更改显示输出的下拉选择
      <?xml version="1.0" encoding="utf-8"?>
      <RunSettings>
        <RunConfiguration>
          <TargetPlatform>x64</TargetPlatform>
        </RunConfiguration>
      </RunSettings>
      
      [TestMethod]
      
      Before: public static void Test1()
      
      After: public void Test1()
      
      Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1
      
      [Informational] NUnit Adapter 3.10.0.21: Test discovery starting
      [Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
      [Informational] NUnit Adapter 3.10.0.21: Test discovery complete