201

更新:添加 2019;发现/运行器集成机制与 2017 和 2015 相同,因此可能出错的关键问题是相同的。


我已经阅读了为什么 xUnit 运行程序没有找到我的测试,这涵盖了 xUnit永远无法找到您的测试但我的问题不同的原因 - 我相信我的测试没有任何微妙之处;(他们在其他环境中工作过,这似乎只是我的机器) - Visual Studio 2015 [社区版] 中的 Visual Studio Test Runner 根本没有显示我的任何测试。我没有做任何令人兴奋的事情;测试针对桌面上的 xUnit.net v2。

我查看了“输出”窗口,但在“显示选项卡的输出”中的“测试”下根本看不到任何内容。

4

40 回答 40

236
  1. 从您的查询中消除发现异常;转到输出窗口 (Ctrl-Alt-O),然后将显示输出从下拉 (Shift-Alt-S) 切换到测试并确保没有发现异常

  2. 测试|测试设置|如果您的测试是特定于 x86/x64 并且发现正在触发与比特性相关的异常(即不是AnyCpu ),则默认处理器架构会有所帮助

  3. 正如这个答案中所建议的(如果技术有帮助,请投票) 运行桌面控制台运行器(指令)可以是一个很好的交叉检查以消除其他可能性,例如损坏的配置文件: -

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

    注意该xunit.runner.console包已被弃用 - 当您在 VS 中工作时,您也可以dotnet test在 CI 上下文中运行它们


去阅读文档- 它是全面的,最新的,包括故障排除信息并需要 PR:-

重要提示:如果您之前安装了 xUnit.net Visual Studio Runner VSIX(扩展),则必须先将其卸载。Visual Studio 运行程序现在仅通过 NuGet 分发。要删除它,请转到Tools > Extensions and Updates。滚动到列表底部,如果安装了 xUnit.net,请将其卸载。这将强制您重新启动 Visual Studio。

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

以下步骤对我有用:

  1. (仅当您怀疑您的机器上存在严重混乱时 - 通常更常见的情况是尚未安装 Visual Studio 集成)

    按照建议做DEL %TEMP%\VisualStudioTestExplorerExtensions:-

    PS> del $env:TEMP\VisualStudioTestExplorerExtensions

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

    • 包:

      .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)
      

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

  3. 关闭测试资源管理器<- 这对我来说是缺失的部分

  4. 重新打开测试资源管理器 (Alt-S,W,T)

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

于 2016-01-30T15:55:13.450 回答
36

上述解决方案都不适合我(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)
于 2017-04-18T19:48:02.723 回答
36

将测试项目 CPU 更改为 x64 后,我不得不更改测试设置。然后再次检测到测试。

建筑学

于 2017-06-13T11:40:48.550 回答
26

为测试项目安装xunit.runner.visualstudio

于 2017-10-31T13:13:38.547 回答
20

确保您的测试类是public

于 2019-10-21T10:40:54.240 回答
14

请按照以下步骤操作:

  1. 更新您的MsTest.TestAdapterMsTest.TestFramework dll'snugget package manager.
  2. 清洁您的解决方案
  3. 构建您的解决方案。
于 2017-10-16T08:21:21.343 回答
11

在使用 ASP Core 项目和 xUnit 2.2.0 时,我整个下午都在为此苦苦挣扎。我的解决方案是添加对Microsoft.DotNet.InternalAbstractions

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

于 2016-11-01T21:30:31.580 回答
10

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

于 2017-03-21T16:13:58.553 回答
9

我在使用 Visual Studio 2019 时遇到了同样的问题。刚刚安装了以下 NuGet 包,问题就解决了。

1)。xUnit

2)。xunit.runner.visualstudio

3)。Microsoft.TestPlatform.TestHost

4)。Microsoft.NET.Test.Sdk

于 2019-05-05T10:57:42.340 回答
8

花了 2 天后......以上都不适合我。唯一的“解决方案”是:转到项目属性-> 构建选项卡。然后单击窗格右下角的高级按钮。将“调试信息:”更改为“完整”,然后单击“确定”。

以下是屏幕截图: 在此处输入图像描述

在此处输入图像描述在此处输入图像描述

于 2017-06-18T20:33:05.873 回答
7

就我而言,原因是项目调试器和测试运行器之间的目标构建不同。统一这些元素:

  1. 测试>测试设置>默认处理器架构。然后选择 X64 或 X86。
  2. 项目>(您的项目)属性>构建(选项卡)>平台目标。

在它们相同后,重新构建您的解决方案,然后将为您显示测试方法。

于 2018-02-25T07:28:06.477 回答
6

我正在使用 xUnit 2.2.0。

我的问题是我的解决方案无法找到某些 dll 并app.config试图解决它们。该错误未显示在 Visual Studio 的测试输出窗口中。

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

如何在 CLI 中运行 xunit 测试

于 2017-09-07T05:18:41.200 回答
5

我可以为几天前遇到的边缘情况提供解决方案。它不会是适合上述所有场景的解决方案,但是,对于边缘情况,我已经修复了它。

我在最新的 VS 2017(版本 15.5.7)和 XUnit 2.3.1 中遇到了同样的问题。xunit.runner.visualstudio 包已安装,但是测试并未显示在 VisualStudio 的内置测试资源管理器中。

我正在处理一个针对 .NET 框架 4.5 的遗留项目。但是,从 2.2 版开始。XUnit 不支持低于 4.5.2 的 .NET 框架(请参阅发行说明 - XUnit 2.2:2017 年 2 月 19 日

将测试项目的目标框架更改为 >= 4.5.2 对我有用。您不必更改正在测试的项目版本,只需更改测试项目本身即可。

于 2018-03-05T12:16:36.727 回答
3

这也可能是由于构建配置中当前平台项目的构建复选框未选中。点击构建 | 配置管理器,然后确保测试项目在您正在使用的平台的构建列中有一个勾号(例如“x86”)。

这绝对是对我有用的解决方案。

于 2017-07-14T09:35:00.550 回答
3

请确保您没有在 .NET Standard 2.0 类库中编写单元测试。在撰写本文时,visualstudio 运行程序不支持在 netstandard2.0 类库中运行测试。

在此处查看测试运行器兼容性矩阵:

https://xunit.net

于 2017-09-05T09:29:35.673 回答
3

遇到与 VS 未发现测试方法类似的问题。在我的情况下,我在方法中使用了 static 关键字,我删除了它并且它起作用了。

[TestMethod]

Before: public static void Test1()

After: public void Test1()
于 2017-10-01T23:45:58.753 回答
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
于 2018-02-20T09:34:00.243 回答
2
  1. 关闭所有 Visual Studio 实例
  2. 转到 %TEMP%\VisualStudioTestExplorerExtensions\
  3. 删除 specrun 相关文件夹
  4. 再试一次

让我知道,谢谢

于 2019-05-15T03:20:41.943 回答
2

就我而言,我在解决方案中有 2 个不同的测试项目。可以找到项目 1 的测试,但找不到项目 2 的测试。我发现首先卸载测试项目 1,然后关闭 VS > 清除我的临时文件 > 重新打开解决方案 > 重建,允许 VS 发现我的项目 2 测试。

我假设两个测试项目之间一定存在冲突,这是让我在几分钟内启动并运行的最快方法。扭结可以稍后解决:)。

于 2017-08-24T17:50:23.670 回答
2

还有一个原因可能导致测试资源管理器不显示任何测试,这.pdb与 Visual Studio 2017 / for .NET Core 引入的新可移植文件格式有关,这可能会破坏一些 VS 工具。(背景:请参阅错误报告“Mono.Cecil 使用新的 .csproj PDB 导致 OutOfMemoryException”。)

.pdb是否因为新的可移植(调试符号)格式而找不到您的测试?

  • 打开输出窗口。
  • 将Show output的下拉选择从更改为Tests
  • 如果您看到如下输出(可能对每个测试重复一次),那么您就遇到了此答案中描述的问题:

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

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

  • 打开测试项目的属性(在解决方案资源管理器中选择测试项目并按Alt+ Enter)。
  • 切换到构建选项卡。
  • 单击“高级...”按钮(位于该标签页的最末端)。
  • 在标有Debugging information的下拉菜单中,选择nonepdb-onlyfull,但不要 portable选择。正是这最后一个设置导致无法找到测试。
  • 单击确定并清理并重建您的项目。如果您想更加确定,请转到测试项目的输出目录并.pdb在重建之前清理所有文件。现在你的测试应该回来了。
于 2017-05-07T18:23:15.400 回答
1

对我来说,最常见的罪魁祸首是 Visual Studio 试图使用与其测试的库不同的架构来运行测试。不幸的是,有多个地方似乎会出错。

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

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

然后从测试 -> 测试设置 -> 选择测试设置文件中选择此文件。

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

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

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

于 2017-04-03T15:45:22.687 回答
1

在我的情况下,我在同一个解决方案中有多个测试项目,只有一个项目没有显示“测试资源管理器”

我通过右键单击解决方案转到“管理解决方案的 Nuget 包”。

我注意到在“合并”选项卡下有一些“测试”nuget 包在项目之间不同步。我点击了“安装”,我丢失的测试出现了。

于 2017-11-30T03:54:21.193 回答
1

当我在 VS 2017 中使用 IntelliTest 进行第一次步行尝试时,这件事发生在我身上。

有时,当测试项目由 IntelliTest 自动创建时,程序集引用Microsoft.ExtendedReflection( ...\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\Pex\Microsoft.ExtendedReflection。 dll ) 丢失。添加后,生成的测试将在重新编译后显示在测试资源管理器中。

于 2017-06-20T13:30:31.810 回答
1

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

于 2017-10-15T09:11:32.337 回答
1

我尝试了上面的大部分建议,但没有任何效果。就我而言,我在一个团队中,并且正在为其他开发人员提供相同解决方案的测试。所以,我试图删除我的 .vs 文件夹,但也没有运气。

我最终完全删除了我的本地文件夹并重新克隆了 repo。这为我解决了它。

于 2018-02-01T12:52:12.760 回答
1

这是对我们有用的解决方案。不是最好的,但也许可以受益。

背景:

  • 我们的脚本是使用 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..

现在显示测试。

于 2018-05-29T17:30:47.403 回答
1

我希望我的回答对你们中的一些人有所帮助:在大多数情况下,当我的单元测试未被发现时,我不得不将测试类访问修饰符更改为 public。添加一个新类(Shift+Alt+C)时,默认访问修饰符是内部的,大多数时候我忘记更改它。

于 2021-11-10T08:37:59.900 回答
1

免责声明:这与带有 Visual Studio 2015 的 xunit 无关,而是带有 UWP 单元测试应用程序 (MSTest) 的 Visual Studio 2017。我到这个线程搜索同样的事情,所以也许其他人会做同样的事情:)

我的解决方案是更新 MSTest.TestAdapter 和 MSTest.TestFramework 的 nuget 包。似乎当您为 UWP 创建单元测试应用程序时,您不会自动获得最新版本。

于 2017-06-20T14:22:29.813 回答
0

我的解决方案中有许多不同类型的项目,我无法运行 Xunit 测试项目。我卸载了除我的 Xunit 项目之外的所有这些,然后重建了测试出现在 Visual Studio 中的解决方案,我可以运行它们。

于 2017-10-30T13:26:02.103 回答
0

打开输出 -> 测试并查看错误是什么。就我而言,我收到了以下错误消息:

The framework 'Microsoft.AspNetCore.App', version '5.0.0' (x64) was not found.

安装 .Net SDK 5.0 后,测试立即生效:https ://dotnet.microsoft.com/download/dotnet/thank-you/sdk-5.0.402-windows-x64-installer

于 2021-11-03T19:03:39.153 回答
0

将您的测试类设为公开并将注释添加为 [TestClass]

于 2020-07-03T08:49:10.917 回答
0

当您将 VS2015 移动到 VS2017 以在测试资源管理器中发现测试时,您需要更新所有包。

于 2017-11-08T07:00:53.800 回答
0

我不知道你们中的一些人是否也使用 JustMock,但我必须在 VS 2017 中禁用分析器才能进行测试检测。

于 2017-07-20T21:49:14.483 回答
0

就我而言,我创建了一个新的“解决方案配置”,如图所示。因此,当我将自定义选项选为“Prod”时,由于某种原因,它无法识别 TestMehods。改回“调试”可以解决问题

在此处输入图像描述

于 2017-07-20T16:09:15.440 回答
0

我清除了 Temp、%Temp% 和 Prefetch。然后尝试重新打开VS并能够找到测试方法

于 2017-12-05T04:18:19.183 回答
0

我有测试项目 A 和 B。项目 A 中的测试发现但发现从未停止 B。我不得不手动终止 TestHost 才能停止。

我做了很多本页描述的事情,甚至到了我不确定这是否是解决方案的地步。

现在它起作用了,我所做的就是打开解决方案而不是启动测试资源管理器。相反,我只是检查了测试的输出窗口,我可以看到发现过程结束并且测试数量等于 A+B。在此之后,我打开了测试资源管理器,然后打开了 A 和 B。所以:

正确卸载并安装最新的 xUnit。如上所述删除 %temp%,添加 NuGet 包“Microsoft.TestPlatform.TestHost” 添加 NuGet 包“Microsoft.NET.Test.Sdk”,重新启动但只检查测试输出。如果它有效,你会看到

于 2018-01-17T13:10:52.793 回答
0

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

于 2017-07-17T15:54:15.393 回答
0

右键单击测试项目并选择属性。将 Target 框架属性从 1.1 更改为其他内容(我使用的是 3.1),所有内容都将运行为 1.1 不再涵盖:P

于 2021-10-19T22:27:11.470 回答
-1

这对我来说很容易——包含测试方法的类必须是公共的。:)

于 2021-01-12T14:44:36.790 回答
-1

在属性窗口中检查 test.cs 文件的类型,它是 c# 编译器。就我而言,我不小心将其更改为 embedresource 并遇到了这个问题。

于 2021-06-14T06:38:45.183 回答