更新:添加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 Test Runner [社区版]根本没有显示我的测试的任何。我没有做任何令人兴奋的事情;测试以桌面上的xUnit.net v2为目标。
我已经在“输出”窗口中查看了测试,测试标签中的测试。
答案 0 :(得分:184)
消除查询中的发现异常;转到输出窗口(Ctrl-Alt-O),然后将显示输出从下拉列表(Shift-Alt-S)切换到测试并确保没有发现例外
As suggested in this answer(upvote it if the technique helps) 运行桌面控制台运行器(instructions)可以是一个很好的交叉检查,以消除其他可能性,例如损坏的配置文件: -
packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>
测试|测试设置|默认处理器架构可以提供帮助,如果您的测试是特定于x86 / x64并且发现正在触发与bittedness相关的异常,即不是 AnyCpu
Go read the documentation - 它是全面的,最新的,包括故障排除信息并采取PR: -
重要说明:如果您以前安装了xUnit.net Visual Studio Runner VSIX(扩展),则必须先将其卸载。 Visual Studio运行程序现在只通过NuGet分发。要删除它,请转到工具&gt; 扩展程序和更新。滚动到列表底部,如果安装了xUnit.net,请将其卸载。这将强制您重新启动Visual Studio。
如果您在发现或运行测试时遇到问题,则可能是Visual Studio中损坏的运行时缓存的受害者。要清除此缓存,请关闭所有Visual Studio实例,然后删除文件夹
%TEMP%\VisualStudioTestExplorerExtensions
。还要确保您的项目仅链接到单个版本的Visual Studio runner NuGet包(xunit.runner.visualstudio
)。
以下步骤对我有用:
(只有当您怀疑机器出现严重问题时 - 通常情况下,更常见的情况是视觉工作室集成尚未安装)
按照建议做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)
重建以确保xunit.runner
在输出目录
关闭测试资源管理器 &lt; - 这是我的遗漏
重新打开测试资源管理器(Alt-S,W,T)
运行所有测试(Ctrl R,A)
答案 1 :(得分:26)
以上解决方案均不适合我(dotnetcore 1.1,VS2017)。这是修正它的原因:
除我之前安装的这些软件包之外,还有:
答案 2 :(得分:23)
答案 3 :(得分:17)
为测试项目安装xunit.runner.visualstudio
包
答案 4 :(得分:13)
请按照以下步骤操作:
MsTest.TestAdapter
更新您的MsTest.TestFramework
和dll's
nugget package manager
。答案 5 :(得分:10)
在使用ASP核心项目和xUnit 2.2.0的整个下午,我一直在努力解决这个问题。我的解决方案是添加对Microsoft.DotNet.InternalAbstractions
我在尝试使用dotnet test
手动运行测试项目时发现了这一点,但失败但报告InternalAbstractions
丢失了。当自动发现失败时,我在测试输出窗口中没有看到此错误。我在发现窗口中看到的唯一信息是返回代码,当时对我来说并不意味着什么,但事后看来可能是错误。
答案 6 :(得分:8)
这种情况发生在我身上几次 - 当我清理项目并再次构建它时,它往往会很好。
答案 7 :(得分:5)
花了2天......以上都没有为我工作。唯一的“解决方案”是: 转到项目属性 - &gt;构建选项卡。然后单击窗格右下角的“高级”按钮。将“Debug Info:”更改为“full”,然后单击“确定”。
答案 8 :(得分:5)
我可以为几天前遇到的边缘案例提供解决方案。它不会成为适合上述所有场景的解决方案,但是,对于边缘情况,我已经修复了它。
我最近的VS 2017(版本15.5.7)和XUnit 2.3.1遇到了同样的问题。安装了xunit.runner.visualstudio软件包,然而,测试并没有出现在VisualStudio的内置测试资源管理器中。
我正在开发一个针对.NET framework 4.5的遗留项目。但是,从2.2版开始。 XUnit不支持低于4.5.2的.NET框架(参见Release Notes - XUnit 2.2: February 19, 2017
)将测试项目的目标框架更改为版本&gt; = 4.5.2对我有用。您不必更改您正在测试的项目版本,它只是测试项目本身。
答案 9 :(得分:5)
我使用的是xUnit 2.2.0。
我的问题是我的解决方案无法找到某些dll而app.config
正在尝试解决它们。该错误未显示在Visual Studio的测试输出窗口中。
我在安装xunit.runner.console
并尝试通过命令行运行测试时能够识别错误。
答案 10 :(得分:3)
这也可能是由于未在构建配置中为当前平台项目选中构建复选框。 单击构建|配置管理器,然后确保测试项目在您正在使用的平台的构建列中打勾(例如&#39; x86&#39;)。
这绝对是对我有用的解决方案。
答案 11 :(得分:3)
确保您测试的课程是公开。
答案 12 :(得分:3)
确保您没有在.NET Standard 2.0类库中编写单元测试。在撰写本文时,visualstudio runner不支持在netstandard2.0类库中运行测试。
测试运行者兼容性矩阵答案 13 :(得分: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
答案 14 :(得分:2)
就我而言,我在解决方案中有两个不同的测试项目。可以找到项目1测试,但项目2测试不能。我发现首先卸载测试项目1,然后关闭VS&gt;清除我的临时文件&gt; <重新开放解决方案>重建,允许VS发现我的Project 2测试。
我假设两个测试项目之间必须存在冲突,这是让我在几分钟内启动并运行的最快方法。扭结可以在以后解决:)。
答案 15 :(得分:2)
与VS没有发现测试方法有类似的问题。在我的情况下,我使用方法的static关键字,我删除了它并且它工作。
[TestMethod]
Before: public static void Test1()
After: public void Test1()
答案 16 :(得分:1)
在我的情况下,我在同一个解决方案中有多个测试项目,并且只有一个项目没有显示&#34;测试资源管理器&#34;
我去了#34;管理Nuget Package for Solution&#34;右键单击解决方案。
我注意到&#34;巩固&#34;标签上有一些&#34;测试&#34;项目之间不同步的nuget包。我点击了&#34;安装&#34;我失踪的测试出现了。
答案 17 :(得分:1)
这是适用于我们的解决方案。不是最好的,但也许可以受益。
背景:
在构建时,我们会看到以下消息:
[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
解决方案(临时):
现在显示测试。
答案 18 :(得分:1)
我尝试了上面的大部分建议,没有任何效果。就我而言,我是一个团队,其他开发人员正在为相同的解决方案出现测试。所以,我试图删除我的.vs文件夹,但也没有运气。
我最终完全删除了我的本地文件夹并重新克隆了回购。这解决了我。
答案 19 :(得分:1)
免责声明:它不是关于xunit与visual studio 2015,而是Visual Studio 2017与UWP单元测试应用程序(MSTest)。我到这个线程搜索相同的东西,所以也许其他人也会这样做:)
我的解决方案是更新MSTest.TestAdapter和MSTest.TestFramework的nuget包。看来,当您为UWP创建单元测试应用时,您不会自动获得最新版本。
答案 20 :(得分:1)
当我在VS 2017中首次使用IntelliTest进行首次步行尝试时,我很高兴。
有时,当测试项目由IntelliTest自动创建时,程序集引用Microsoft.ExtendedReflection
( ... \ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection.dll )丢失。
添加后,生成的测试将在重新编译后显示在测试资源管理器中。
答案 21 :(得分:1)
最常见的罪魁祸首是Visual Studio尝试使用与其测试的库不同的架构来运行测试。不幸的是,有很多地方似乎会出错。
在VS 2017中,尝试创建一个运行设置文件,例如您的测试项目中的Default.runsettings
。如果您的主lib是x64,则内容应为:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<TargetPlatform>x64</TargetPlatform>
</RunConfiguration>
</RunSettings>
然后从Test中选择此文件 - &gt;测试设置 - &gt;选择测试设置文件。
然后,在Test - &gt;下测试设置,默认处理器架构,再次选择正确的架构。
务必清理并构建整个解决方案。您可能需要关闭并重新打开“测试资源管理器”窗口。在输出中查找任何其他错误 - &gt;测试窗口,了解有关不正确架构类型的更多线索。
可以找到其他测试设置条目here。
答案 22 :(得分:0)
我在Visual Studio 2019中遇到了相同的问题。只需安装以下NuGet程序包即可解决此问题。
1)。 xUnit
2)。 xunit.runner.visualstudio
3)。 Microsoft.TestPlatform.TestHost
4)。 Microsoft.NET.Test.Sdk
答案 23 :(得分:0)
让我知道,谢谢
答案 24 :(得分:0)
安装nuget xunit.runner.visualstudio
解决了我的问题答案 25 :(得分:0)
我有测试项目A和B.在项目A中进行了测试但发现但是发现从未停止过B.我必须手动杀死TestHost才能停止。
我做了很多这方面的事情甚至到了我不确定这是解决方案的问题。
现在它工作了,我所做的就是打开解决方案,而不是测试资源管理器。相反,我只是检查了输出窗口的测试,我可以看到发现过程结束,测试的数量等于A + B.在此之后,我打开了测试资源管理器,然后打开了A和B. 所以:
正确卸载并安装最新的xUnit内容。如上所述删除%temp%,添加NuGet包“Microsoft.TestPlatform.TestHost” 添加NuGet包“Microsoft.NET.Test.Sdk”,重新启动但只检查测试输出。如果它有效,你会看到
答案 26 :(得分:0)
I Cleared Temp,%Temp%和Prefetch。然后尝试重新打开VS并能够找到测试方法
答案 27 :(得分:0)
当您将VS2015移至VS2017以在测试资源管理器中进行发现测试时,您需要更新所有软件包。
答案 28 :(得分:0)
我的解决方案中有许多不同类型的项目,我无法运行Xunit测试项目。除了我的Xunit项目之外我卸载了所有这些,然后重新构建测试在visual studio中出现的解决方案,我可以运行它们。
答案 29 :(得分:0)
我不知道你们中的一些人是否也使用JustMock,但我必须在VS 2017中禁用探查器才能使测试检测工作。
答案 30 :(得分:0)
答案 31 :(得分:0)
同时检查测试项目中是否有完全空的app.config文件(完全空白,绝对没有标记)。这是我案件中的罪魁祸首。
答案 32 :(得分:-1)
对我来说就是这么简单 - 包含测试方法的类必须公开。 :)
答案 33 :(得分:-1)
在属性窗口检查test.cs文件的类型,它是c#编译器。就我而言,我不小心将其更改为 embedresource 并遇到了此问题。
答案 34 :(得分:-2)
将您的测试课程设为公开,并在[TestClass]中添加注释