为什么Visual Studio 2015/2017 Test Runner没有发现我的xUnit v2testing

更新:添加2017年; VS2017使用与2015年相同的testing发现/运行器集成机制,因此可能出错的关键是相同的。


我读过为什么xUnit runner没有find我的testing,其中涵盖了xUnit 永远无法find你的testing的原因,但是我的问题是不同的 – 我相信我的testing没有什么微妙的变化。 (他们已经在其他环境中工作,这似乎只是我的机器)Visual Studio 2015 [社区版]中的Visual Studiotesting运行器是根本不显示我的任何testing。 我没有做任何令人兴奋的事情。 testing的目标是桌面上的xUnit.net v2。

我查看了输出窗口,在标签的显示输出中没有看到任何东西。

  1. 消除查询中的发现exception; 转到输出窗口(Ctrl-Alt-O),然后下拉列表(Shift-Alt-S)切换显示输出testing ,并确保没有发现exception

  2. 正如在这个回答(喜欢它,如果技术有帮助)build议运行桌面控制台运行( 指令 )可以是一个很好的交叉检查,以消除其他可能性,例如mangledconfiguration文件: –

    packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>

  3. testing|testing设置|默认处理器体系结构可以帮助,如果您的testing是特定的x86 / x64和发现触发与bittedness相关的exception,即不是AnyCpu


阅读文档 – 它是全面的,最新的,包括疑难解答信息,并采取PR: –

重要说明:如果您以前安装了xUnit.net Visual Studio Runner VSIX(扩展),则必须先将其卸载。 Visual Studio运行器现在只能通过NuGet分发。 要删除它,去工具 > 扩展和更新 。 滚动到列表底部,如果安装了xUnit.net,请将其卸载。 这将强制您重新启动Visual Studio。

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

以下步骤适用于我:

  1. (只有在怀疑计算机上出现严重混乱的情况下(通常情况下,更常见的情况是Visual Studio集成尚未安装)

    按照build议执行DEL %TEMP%\VisualStudioTestExplorerExtensions : –

    PS> del $env:TEMP\VisualStudioTestExplorerExtensions

  2. 在所有testing项目中安装NuGet包xunit.runner.visualstudio

    • PAKET:

       .paket\paket add nuget xunit.runner.visualstudio -i 

      您需要在paket.dependencies中完成以下paket.dependencies

      nuget xunit.runner.visualstudio version_in_path: true

      注意version_in_path: true位很重要

    • Nuget:进入软件包pipe理器控制台(Alt-T,N,O)和

       Install-Package xunit.runner.visualstudio) 

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

  3. closurestesting浏览器< – 这是我的缺失位

  4. 重新打开testing浏览器(Alt-S,W,T)

  5. 运行所有testing(Ctrl R,A)

我一直在用ASP核心工程和xUnit 2.2.0工作,整个下午都在苦苦挣扎。 对我来说,解决scheme是添加对Microsoft.DotNet.InternalAbstractions的引用

我试图用dotnet test手动运行testing项目时发现这个失败,但报告说InternalAbstractions丢失了。 当自动发现失败时,我在testing输出窗口中看不到这个错误。 我在发现窗口看到的唯一信息是一个返回代码,当时对我来说并不意味着什么,但事后看来可能表明了一个错误。

上述解决scheme都不适合我(dotnetcore 1.1,VS2017)。 这是什么修复它:

  1. 添加NuGet包“Microsoft.TestPlatform.TestHost”
  2. 添加NuGet包“Microsoft.NET.Test.Sdk”

那些除了我之前安装的这些软件包之外

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

将testing项目CPU更改为x64后,必须更改testing设置。 然后再次检测到的testing。

建筑

发生在我身上的几次 – 当我清理这个项目并重新构build它时,情况就会好起来。

花了两天后…以上都没有为我工作。 唯一的“解决scheme”是:转到项目属性 – >生成选项卡。 然后点击窗格右下angular的高级button。 将“debugging信息:”更改为“完整”,然后单击确定。

这里是屏幕截图: 在这里输入图像说明

在这里输入图像说明 在这里输入图像说明

这也可能是由于构buildconfiguration中的当前平台项目的构buildcheckbox未勾选。 点击Build | configurationpipe理器,然后确保testing项目在您正在使用的平台(例如“x86”)的构build列中打勾。

这绝对是为我工作的解决scheme。

我正在使用xUnit 2.2.0。

我的问题是我的解决scheme无法find某些dll和app.config试图解决它们。 在Visual Studio的testing输出窗口中没有显示错误。

当我安装了xunit.runner.console并试图通过命令行运行testing时,我能够识别错误。

如何在CLI中运行xunittesting

对我来说,最常见的罪魁祸首是Visual Studio尝试使用与正在testing的库不同的架构来运行testing。 不幸的是,有很多地方看起来可能会出错。

在VS 2017中,尝试创build一个运行设置文件,例如您的testing项目中的Default.runsettings 。 如果你的主lib是x64,内容应该是:

 <?xml version="1.0" encoding="utf-8"?> <RunSettings> <RunConfiguration> <TargetPlatform>x64</TargetPlatform> </RunConfiguration> </RunSettings> 

然后从testing – >testing设置 – >selecttesting设置文件中select该文件。

然后,在testing – >testing设置,默认处理器架构下,再次select正确的架构。

确保清理并构build整个解决scheme。 您可能需要closures并重新打开testing浏览器窗口。 在“输出” – >“testing”窗口中查找任何其他错误,以获取有关不正确体系结构types的更多线索。

仅供参考,其他testing设置条目可以在这里find。

还有一个原因可能导致testing浏览器不显示任何testing,并且它与Visual Studio 2017 / for .NET Core引入的新的便携式.pdb文件格式有关,这可能会破坏一些VS工具。 (背景:查看错误报告“Mono.Cecil导致OutOfMemoryException与新的.csproj PDB” 。)

由于新的便携式.pdb (debugging符号)格式,您的testing没有find?

  • 打开输出窗口。
  • 显示输出从下拉select更改为testing
  • 如果你看到输出如下(可能重复一次你的每个testing),那么你有这个答案中描述的问题:

     Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod> Array dimensions exceeded supported range. 

如果是,请执行此操作来解决问题:

  • 打开您的testing项目的属性 (在解决scheme资源pipe理器中selecttesting项目,然后按Alt + Enter )。
  • 切换到“ 生成”选项卡。
  • 点击高级…button(位于该标签页的最后)。
  • 在标有debugging信息的下拉列表中,selectnonepdb-onlyfull ,但不可 portable 。 这是最后一个设置导致testing不被发现。
  • 点击确定 ,清理并重build你的项目。 如果您想额外确定,请转到您的testing项目的输出目录,并在重build之前清除所有.pdb文件。 现在你的testing应该回来了。

就我而言,我在解决scheme中有两个不同的testing项目。 项目1的testing可以find,但项目2的testing不能。 我发现首先卸载testing项目1,然后closuresVS>清除我的临时文件>重新打开解决scheme>重build,允许VS发现我的项目2testing。

我假设两个testing项目之间必须有冲突,这是在几分钟内让我启动并运行的最快方法。 扭结可以在以后的:)。

确保你没有在.NET标准2.0类库中编写你的unit testing。 撰写本文时,visualstudio runner不支持在netstandard2.0类库中运行testing。

在这里检查testing运行器兼容性matrix:

https://xunit.github.io/#runners

按照下面的步骤:

  1. 更新您的MsTest.TestAdapterMsTest.TestFramework dll'snugget package manager
  2. 清理你的解决scheme
  3. build立你的解决scheme

对我来说,当我第一次在VS 2017中第一次用IntelliTest进行步行尝试的时候,

有时,当IntelliTest自动创buildtesting项目时, Microsoft.ExtendedReflection程序集引用( … \ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft .ExtendedReflection.dll )缺失。 添加后,生成的testing将在重新编译后显示在testing浏览器中。

免责声明:这不是关于Visual Studio 2015的xunit,而是关于带有UWPunit testing应用程序(MSTest)的Visual Studio 2017。 我得到这个线程search相同的东西,所以也许别人会做同样的:)

对我来说,解决scheme是更新MSTest.TestAdapter和MSTest.TestFramework的nuget包。 看来,当你为UWP创build一个unit testing应用程序,你不会自动获得最新版本。

还要检查一个完全空白的app.config文件(完全空白,完全没有标记)是否在testing项目中。 这是我的案子的罪魁祸首。

就我而言,我创build了一个新的“解决schemeconfiguration”,如图所示。 所以当我select我的自定义一个“产品”,由于某种原因,它不承认TestMehods。 改回“debugging”解决了这个问题

在这里输入图像说明

我不知道你们中的一些人是否也使用JustMock,但是我必须禁用VS 2017中的分析器才能使testing检测正常工作。

与VS没有发现testing方法类似的问题。 在我的情况下,我有方法的静态关键字,我删除,它的工作。

 [TestMethod] Before: public static void Test1() After: public void Test1() 

我的问题是通过安装nuget xunit.runner.visualstudio解决的

我的解决scheme中有许多不同types的项目,我无法运行Xunittesting项目。 除了我的Xunit项目之外,我卸载了所有这些项目,然后重新构build了Visual Studio中的testing解决scheme,我可以运行它们。

为testing项目安装xunit.runner.visualstudio软件包

当您将VS2015移动到VS2017以便在testing浏览器中发现testing时,您需要更新所有软件包。