为什么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。
我查看了输出窗口,在标签的显示输出中没有看到任何东西。
- 
消除查询中的发现exception; 转到输出窗口(Ctrl-Alt-O),然后从下拉列表(Shift-Alt-S)切换显示输出到testing ,并确保没有发现exception 
- 
正如在这个回答(喜欢它,如果技术有帮助)build议运行桌面控制台运行( 指令 )可以是一个很好的交叉检查,以消除其他可能性,例如mangledconfiguration文件: – packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>
- 
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 Studioxunit.runner.visualstudioNuGet程序包(xunit.runner.visualstudio)链接。
以下步骤适用于我:
- 
(只有在怀疑计算机上出现严重混乱的情况下(通常情况下,更常见的情况是Visual Studio集成尚未安装) 按照build议执行 DEL %TEMP%\VisualStudioTestExplorerExtensions: –PS> del $env:TEMP\VisualStudioTestExplorerExtensions
- 
在所有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在输出目录中结束
- 
- 
closurestesting浏览器< – 这是我的缺失位 
- 
重新打开testing浏览器(Alt-S,W,T) 
- 
运行所有testing(Ctrl R,A) 
 我一直在用ASP核心工程和xUnit 2.2.0工作,整个下午都在苦苦挣扎。 对我来说,解决scheme是添加对Microsoft.DotNet.InternalAbstractions的引用 
 我试图用dotnet test手动运行testing项目时发现这个失败,但报告说InternalAbstractions丢失了。 当自动发现失败时,我在testing输出窗口中看不到这个错误。 我在发现窗口看到的唯一信息是一个返回代码,当时对我来说并不意味着什么,但事后看来可能表明了一个错误。 
上述解决scheme都不适合我(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)
将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信息的下拉列表中,selectnone,pdb-only或full,但不可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:
按照下面的步骤:
-  更新您的MsTest.TestAdapter和MsTest.TestFrameworkdll's从nugget package manager。
- 清理你的解决scheme
- 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时,您需要更新所有软件包。