为什么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.visualstudio
NuGet程序包(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信息的下拉列表中,select
none
,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.TestFramework
dll'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时,您需要更新所有软件包。