为什么Visual Studio 2015/2017/2019的测试运行程序无法发现我的xUnit v2测试?

205

更新:添加了2019年说明;发现/运行器集成机制与2017年和2015年相同,因此可能出现问题的关键事项也相同。


我已经阅读了为什么xUnit运行器找不到我的测试,其中涵盖了xUnit永远无法找到您的测试的原因,但我的问题不同——我相信我的测试没有任何微妙的问题;(它们在其他环境中有效,这似乎只是我的机器)——Visual Studio 2015 [Community Edition]中的Visual Studio测试运行程序根本没有显示任何我的测试。我没有做任何令人兴奋的事情;测试目标是桌面上的xUnit.net v2。
我查看了输出窗口,在显示输出来源选项卡下的测试中根本没有看到任何内容。

为什么xUnit运行器找不到我的测试? 相关链接:https://dev59.com/wGQo5IYBdhLWcg3wOtQC - Ruben Bartelink
1
这只是一个可能的问题,但显然你必须在测试资源管理器中显示之前编译测试项目。 - Niklas Peter
相关:https://dev59.com/D10b5IYBdhLWcg3wJ-Qy#29589576 - Ruben Bartelink
安装 Xunit.execution.desktop 解决了我的问题。 - Renju
6
我曾经遇到这个问题,是因为我忘记将我的新测试类设为公共的。 - Divan
显示剩余2条评论
41个回答

2
在我的情况下,解决方案中有两个不同的测试项目。可以找到第一个项目的测试,但是无法找到第二个项目的测试。我发现首先卸载测试项目1,然后关闭VS > 清除我的临时文件 > 重新打开解决方案 > 重建,允许VS发现我的项目2测试。
我认为两个测试项目之间必须存在某种冲突,这是在几分钟内让我快速上手的最快方法。以后可以解决这些问题 :).

2

我尝试了以上大部分建议,但都没有起作用。在我的情况下,我和一个团队一起工作,其他开发人员也为同一个解决方案编写测试。因此,我尝试只删除了我的 .vs 文件夹,但仍然没有运气。

最终,我彻底删除了本地文件夹,并重新克隆了代码库。这对我起到了解决作用。


1
当我在VS 2017中使用IntelliTest进行第一次步行尝试时,发生了这种情况。
有时,当IntelliTest自动创建测试项目时,对于Microsoft.ExtendedReflection(...\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\Pex\Microsoft.ExtendedReflection.dll)的程序集引用会丢失。添加后,重新编译后生成的测试将显示在测试资源管理器中。

1
免责声明:这不是关于使用Visual Studio 2015的xunit,而是关于使用Visual Studio 2017的UWP单元测试应用程序(MSTest)。我搜索同样的内容进入了这个线程,也许其他人也会这样做 :)
对我来说,解决方案是更新MSTest.TestAdapter和MSTest.TestFramework的nuget包。似乎当你为UWP创建一个单元测试应用程序时,你不会自动获得最新版本。

我建议像我这样提出一个自问自答的问题是隔离此类信息的最佳方式 - 如果您认为有意义,可以随意复制粘贴我的整个问题并将s / xUnit / MSTest /替换。 ;) - Ruben Bartelink

1
通过安装nuget xunit.runner.visualstudio,我的问题已得到解决。

1
在我的情况下,我在同一解决方案中有多个测试项目,只有一个项目没有显示“测试资源管理器”。
我通过右键单击解决方案打开了“管理解决方案的Nuget程序包”。
我注意到在“合并”选项卡下,有一些“测试”nuget程序包在项目之间不同步。我点击了“安装”按钮,我的缺失测试出现了。

1

以下是我们使用的解决方案。虽然不是最好的,但或许能够受益。

背景:

  • 我们的脚本是使用VS 2013开发并使用NUnit VS适配器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 Adapter 3.10...
  • 安装 NUnit VS Adapter 2.1..

现在测试已经显示出来了。


请将您的(至少表面上是)新问题提取到自己的帖子中,以使其成为明确的答案 :) - geisterfurz007
题为“为什么 NUnit TestAdapter v3 看不到我的 NUnit v2 测试?”的问题,a) 在此处进行回应 b) 在顶部放置“另请参阅 <链接>”(即使它有点牵强),但我希望将此答案删除,因为它与标题中的“xUnit v2测试”不太匹配。 - Ruben Bartelink

1
我最常遇到的问题是Visual Studio尝试使用与其测试的库不同的架构来运行测试。不幸的是,似乎有多个地方会出现这种情况。
在VS 2017中,请尝试创建一个运行设置文件,例如在您的测试项目中创建Default.runsettings。如果您的主要库是x64,则内容应为:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
  </RunConfiguration>
</RunSettings>

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

接下来,在“测试” -> “测试设置”下,选择正确的架构作为默认处理器架构。

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

附加的测试设置条目可以在这里找到。


0

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

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接