想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。
更新:添加 2019;发现/运行器集成机制与 2017 和 2015 相同,因此可能出错的关键问题是相同的。
我已经阅读了 Why is the xUnit runner not finding my tests, which covers reasons xUnit would never be able to find your tests,但我的问题有所不同——我相信我的测试没有任何微妙之处; (他们曾在其他环境中工作过,这似乎只是我的机器) - Visual Studio 2015 [社区版] 中的 Visual Studio 测试运行程序根本没有显示我的任何测试。我没有做任何令人兴奋的事情;测试针对桌面上的 xUnit.net v2。
我查看了“输出”窗口,但在“显示选项卡的输出”中的“测试”下根本看不到任何内容。
从您的查询中消除发现异常;转到输出窗口 (Ctrl-Alt-O),然后将显示输出从下拉列表 (Shift-Alt-S) 切换到测试并确保没有发现异常测试|测试设置|默认处理器架构可以帮助您的测试是 x86/x64 特定的并且发现正在触发与 bittedness 相关的异常,即不是 AnyCpu 正如此答案中所建议的(如果技术有帮助,请投票)运行桌面控制台运行程序(说明)可以是一个很好的交叉检查以消除其他可能性,例如损坏的配置文件:-
> packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>
注意 xunit.runner.console
包已弃用 - 当您在 VS 中工作时,您也可以让 dotnet test
在 CI 上下文中运行它们
Go read the documentation - 它是全面的、最新的,包括故障排除信息并需要 PR:-
重要提示:如果您之前安装了 xUnit.net Visual Studio Runner VSIX(扩展),则必须先将其卸载。 Visual Studio 运行程序现在仅通过 NuGet 分发。要删除它,请转到工具 > 扩展和更新。滚动到列表底部,如果安装了 xUnit.net,请将其卸载。这将强制您重新启动 Visual Studio。
如果您在发现或运行测试时遇到问题,您可能是 Visual Studio 中损坏的运行程序缓存的受害者。要清除此缓存,请关闭 Visual Studio 的所有实例,然后删除文件夹 %TEMP%\VisualStudioTestExplorerExtensions。还要确保您的项目仅链接到单个版本的 Visual Studio 运行程序 NuGet 包 (xunit.runner.visualstudio)。
以下步骤对我有用:
(仅当您怀疑您的机器上存在严重混乱时 - 通常更常见的情况是尚未安装 Visual Studio 集成)
按照建议执行DEL %TEMP%\VisualStudioTestExplorerExtensions
:-
PS> del $env:TEMP\VisualStudioTestExplorerExtensions
在所有测试项目中安装 NuGet 包 xunit.runner.visualstudio Paket:.paket\paket add nuget xunit.runner.visualstudio -i 您需要在 paket.dependencies 中得到以下内容:nuget xunit.runner.visualstudio version_in_path: true 请注意 version_in_path: true 位很重要 Nuget:转到包管理器控制台 (Alt-T,N,O) 和 Install-Package xunit.runner.visualstudio Rebuild 以确保 xunit.runner 在输出目录中结束 关闭测试资源管理器<- 这对我来说是缺少的一点重新打开测试资源管理器(Alt-S,W,T)运行所有测试(Ctrl R,A)
上述解决方案都不适合我(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)
TestPlatform.TestHost
。
将测试项目 CPU 更改为 x64 后,我不得不更改测试设置。然后再次检测到测试。
https://i.stack.imgur.com/sIfw0.png
为测试项目安装 xunit.runner.visualstudio
包
确保您的测试课程是公开的。
请按照以下步骤操作:
从 nugget 包管理器更新您的 MsTest.TestAdapter 和 MsTest.TestFramework dll。清理您的解决方案 构建您的解决方案。
%TEMP%\VisualStudioTestExplorerExtensions
时,有时我仍必须从控制台运行测试。
在使用 ASP Core 项目和 xUnit 2.2.0 时,我整个下午都在为此苦苦挣扎。我的解决方案是添加对 Microsoft.DotNet.InternalAbstractions
的引用
我在尝试使用 dotnet test
手动运行测试项目时发现了这一点,该项目失败但报告缺少 InternalAbstractions
。自动发现失败时,我在测试输出窗口中没有看到此错误。我在发现窗口中看到的唯一信息是返回码,当时这对我来说没有任何意义,但事后看来可能表明存在错误。
这发生在我身上几次 - 当我清理项目并再次构建它时,它往往会很好。
我在使用 Visual Studio 2019 时遇到了同样的问题。刚刚安装了以下 NuGet 包,问题就解决了。
1)。 xUnit
2)。 xunit.runner.visualstudio
3)。 Microsoft.TestPlatform.TestHost
4)。 Microsoft.NET.Test.Sdk
花了 2 天后......以上都不适合我。唯一的“解决方案”是:转到项目属性-> 构建选项卡。然后单击窗格右下角的高级按钮。将“调试信息:”更改为“完整”,然后单击“确定”。
https://i.stack.imgur.com/tOT3L.jpg
https://i.stack.imgur.com/AtUag.jpg
就我而言,原因是项目调试器和测试运行器之间的目标构建不同。统一这些元素:
测试>测试设置>默认处理器架构。然后选择 X64 或 X86。项目>(您的项目)属性>构建(选项卡)>平台目标。
在它们相同后,重新构建您的解决方案,然后将为您显示测试方法。
我正在使用 xUnit 2.2.0。
我的问题是我的解决方案无法找到某些 dll,而 app.config
正在尝试解决它们。该错误未显示在 Visual Studio 的测试输出窗口中。
当我安装 xunit.runner.console
并尝试通过命令行运行测试时,我能够识别错误。
How to run xunit tests in CLI。
我可以为几天前遇到的边缘情况提供解决方案。它不会是适合上述所有场景的解决方案,但是,对于边缘情况,我已经修复了它。
我在最新的 VS 2017(版本 15.5.7)和 XUnit 2.3.1 中遇到了同样的问题。 xunit.runner.visualstudio 包已安装,但是测试并未显示在 VisualStudio 的内置测试资源管理器中。
我正在处理一个针对 .NET 框架 4.5 的遗留项目。但是,从 2.2 版开始。 XUnit 不支持低于 4.5.2 的 .NET 框架(请参阅 Release Notes - XUnit 2.2: February 19, 2017
将测试项目的目标框架更改为 >= 4.5.2 对我有用。您不必更改正在测试的项目版本,只需更改测试项目本身即可。
遇到与 VS 未发现测试方法类似的问题。在我的情况下,我在方法中使用了 static 关键字,我删除了它并且它起作用了。
[TestMethod]
Before: public static void Test1()
After: public void Test1()
这也可能是由于构建配置中当前平台项目的构建复选框未选中。点击构建 |配置管理器,然后确保测试项目在您正在使用的平台的构建列中有一个勾号(例如“x86”)。
这绝对是对我有用的解决方案。
请确保您没有在 .NET Standard 2.0 类库中编写单元测试。在撰写本文时,visualstudio 运行程序不支持在 netstandard2.0 类库中运行测试。
Check here 用于测试运行器兼容性矩阵:
还有一个原因可能导致 Test Explorer 不显示任何测试,这与 Visual Studio 2017 / for .NET Core 引入的新的可移植 .pdb
文件格式有关,这可能会破坏一些VS 工具。 (背景:见the bug report "Mono.Cecil causes OutOfMemoryException with new .csproj PDBs"。)
是否因为新的可移植 .pdb(调试符号)格式而找不到您的测试?
打开输出窗口。
将显示输出的下拉选择从更改为测试。
如果您看到类似于以下的输出(可能对每个测试重复一次),那么您已经遇到了此答案中描述的问题:Exception System.OutOfMemoryException, Exception conversion
如果是,请执行以下操作来解决问题:
打开测试项目的属性(在解决方案资源管理器中选择测试项目并按 Alt+Enter)。
切换到构建选项卡。
单击“高级...”按钮(位于该标签页的最末端)。
在标有调试信息的下拉菜单中,选择无、仅 pdb 或完整,但不可移植。正是这最后一个设置导致无法找到测试。
单击确定并清理并重建您的项目。如果您想更加确定,请转到您的测试项目的输出目录并在重建之前清理所有 .pdb 文件。现在你的测试应该回来了。
就我而言,我在解决方案中有 2 个不同的测试项目。可以找到项目 1 的测试,但找不到项目 2 的测试。我发现首先卸载测试项目 1,然后关闭 VS > 清除我的临时文件 > 重新打开解决方案 > 重建,允许 VS 发现我的项目 2 测试。
我假设两个测试项目之间一定存在冲突,这是让我在几分钟内启动并运行的最快方法。扭结可以稍后解决:)。
我被这个问题困扰了很长时间。
我在不同的服务器上部署了大约 100 个不同版本的项目。
将 xunit 从 2.2.0 更新到 2.3.1 不是解决方案,因为在 2.3.1 中构建失败。
然后我刚刚将 xunit.runner.visualstudio 更新到 2.3.1,一切都开始正常了。我在我的包管理器控制台中使用了这个命令来更新我的 xunit.runner.visualstudio 包
Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1
关闭所有 Visual Studio 实例 转到 %TEMP%\VisualStudioTestExplorerExtensions\ 删除 specrun 相关文件夹 再试一次
让我知道,谢谢
我希望我的回答对你们中的一些人有所帮助:在大多数情况下,当我的单元测试未被发现时,我不得不将测试类访问修饰符更改为 public。添加一个新类(Shift+Alt+C)时,默认访问修饰符是内部的,大多数时候我忘记更改它。
对我来说,最常见的罪魁祸首是 Visual Studio 试图使用与其测试的库不同的架构来运行测试。不幸的是,有多个地方似乎会出错。
在 VS 2017 中,尝试在您的测试项目中创建一个运行设置文件,例如 Default.runsettings
。如果您的主库是 x64,则内容应为:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<TargetPlatform>x64</TargetPlatform>
</RunConfiguration>
</RunSettings>
然后从测试 -> 测试设置 -> 选择测试设置文件中选择此文件。
然后,在测试 -> 测试设置,默认处理器架构下,再次选择正确的架构。
请务必清理并构建整个解决方案。您可能需要关闭并重新打开测试资源管理器窗口。在 Output -> Test 窗口中查找任何其他错误,以获取有关不正确架构类型的更多线索。
仅供参考,可以在 here 中找到其他测试设置条目。
当我在 VS 2017 中使用 IntelliTest 进行第一次步行尝试时,这件事发生在我身上。
有时,当 IntelliTest 自动创建测试项目时,程序集引用 Microsoft.ExtendedReflection
(...\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\ Pex\Microsoft.ExtendedReflection.dll) 丢失。添加后,生成的测试将在重新编译后显示在测试资源管理器中。
免责声明:这与带有 Visual Studio 2015 的 xunit 无关,而是带有 UWP 单元测试应用程序 (MSTest) 的 Visual Studio 2017。我到这个线程搜索同样的事情,所以也许其他人会做同样的事情:)
我的解决方案是更新 MSTest.TestAdapter 和 MSTest.TestFramework 的 nuget 包。似乎当您为 UWP 创建单元测试应用程序时,您不会自动获得最新版本。
通过安装 nuget xunit.runner.visualstudio 解决了我的问题
在我的情况下,我在同一个解决方案中有多个测试项目,只有一个项目没有显示“测试资源管理器”
我通过右键单击解决方案转到“管理解决方案的 Nuget 包”。
我注意到在“合并”选项卡下有一些“测试”nuget 包在项目之间不同步。我点击了“安装”,我丢失的测试出现了。
我尝试了上面的大部分建议,但没有任何效果。就我而言,我在一个团队中,并且正在为其他开发人员提供相同解决方案的测试。所以,我试图删除我的 .vs 文件夹,但也没有运气。
我最终完全删除了我的本地文件夹并重新克隆了 repo。这为我解决了它。
这是对我们有用的解决方案。不是最好的,但也许可以受益。
背景:
我们的脚本是使用 VS 2013 开发的,并使用 NUnit VS Adapter 2.1..
最近我们迁移到 VS 2017,当打开相同的解决方案时 - 测试不会显示在测试资源管理器中
在构建时,我们会看到以下消息:
[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
解决方案(临时):
卸载 NUnit 适配器 3.10...
安装 NUnit VS 适配器 2.1..
现在显示测试。
xUnit v2 tests
不符。
还要检查测试项目中是否有一个完全空的 app.config 文件(完全空白,绝对没有标记)。这是我的罪魁祸首。
就我而言,我创建了一个新的“解决方案配置”,如图所示。因此,当我将自定义选项选为“Prod”时,由于某种原因,它无法识别 TestMehods。改回“调试”可以解决问题
https://i.stack.imgur.com/k8Rpq.png
不定期副业成功案例分享
%TEMP%\VisualStudioTestExplorerExtensions
并重新启动 VS 终于奏效了!