我目前正在开发一个目前有32个单元测试的解决方案。我一直在使用resharper测试运行器 - 工作正常。所有测试都在运行,所有测试都显示正确的测试结果。现在一位同事告诉我,使用Visual Studio测试资源管理器测试并没有在他的机器上运行。他们不在我的机器上工作,所以我可以排除一些本地丢失的文件或其他东西。
测试资源管理器显示所有单元测试,但是一旦点击“全部运行”,所有测试都显示为灰色,并且没有显示测试运行的结果:
[TestClass]
属性[TestMethod]
属性obj
,bin
,Debug
和Release
个文件夹我会谴责任何可能导致这种行为的提示。
答案 0 :(得分:65)
如果您的项目不是所有AnyCpu,那么您可能还想检查以下2个设置是否匹配:
[右键单击测试项目] - >属性 - >构建 - >平台目标 - 例如64
[主菜单] - >测试 - >测试设置 - >默认处理器架构 - > X64
我发现当这些与我的测试项目不匹配时,它会无声地运行。
答案 1 :(得分:30)
我在VS 2017中遇到了同样的问题。在我的情况下,它通过重启VS来解决。
答案 2 :(得分:10)
如果您使用的是NUnit而不是MSTest,那么Visual Studio 2012/2013将需要NUnit Test Adapter Extension。
答案 3 :(得分:7)
您可以通过打开“输出”面板(视图->输出)并从“显示输出自”下拉列表中选择“测试”来查看测试运行程序的错误输出
此外,如果已安装Resharper ,则可以打开测试文件并将鼠标悬停在测试旁边的测试圈上,以获取其他错误信息
单击该按钮将带您进入一个包含更多详细信息的窗口。或者,您可以通过转到扩展->整形器-> Windows->单元测试探索结果来打开该窗口
答案 4 :(得分:7)
答案 5 :(得分:6)
我不得不更改异步测试方法以返回Task而不是void。
然后,这些测试处于活动状态并且可以在Test Explorer中运行。
答案 6 :(得分:5)
检查要针对哪个框架编写测试(例如nunit,xunit,VS测试等),并确保已安装正确的测试适配器/运行程序扩展。
对我来说是缺少NUnit 3测试适配器,我通过查看nunit.framework依赖版本来确认所需的版本号。
答案 7 :(得分:5)
安装Nunit3TestAdapter
Nuget已解决了该问题
答案 8 :(得分:4)
我遇到了这个问题,对我来说,这是由于具有多个不同版本的测试项目引起的:
合并项目的nuget包,使它们相同,这对我来说解决了这个问题。
答案 9 :(得分:3)
我有同样的症状。
请确保通过工具 - 扩展程序和更新安装了正确的Visual Studio扩展程序。就我而言,我必须从在线选项中安装XUnit和Specflow。
然后清理解决方案并重建它。
如果仍然没有帮助,请清除临时目录(在“开始”菜单中搜索%temp%并删除Temp中的所有内容)
然后最后尝试卸载Resharper,最终解决了我的问题。
答案 10 :(得分:3)
TLDR:更新测试包,查看输出-> test 控制台
我为此苦了一天半。所以这是我要解决的问题:
由于所有软件包都在.net框架更新期间进行了更新,因此我从工作项目与不工作项目之间的区别开始。第一个线索是所有3个项目都在使用: MSTest.TestAdapter 和 MSTest.TestFramework
自然地,我进入了 VS 2019 中的-> 输出控制台-> 测试下拉列表,并查看了输出。那里没用。
解决方案之一:将 MSTest.TestAdapter 和 MSTest.TestFramework 更新到版本 2.0.0 >
解决方案的第二步:现在,输出控制台-> 测试下拉列表的输出开始一个接一个显示,缺少软件包并且错误绑定重定向
解决方案的第三步:手动添加缺少的软件包。对我来说,
解决方案的第4步:已删除/修复了非必要的绑定重定向。
我希望这会对其他人有所帮助。
答案 11 :(得分:3)
已经使用Visual Studio 2019 16.4.6和Microsoft.VisualStudio.TestTools.UnitTesting
尝试了许多选项,但是目前唯一成功运行测试的方法是在控制台中调用下一个命令
dotnet test
在“测试资源管理器”中发现了测试,但结果为“未运行”。
更新Visual Studio没有帮助。
通过运行下一个软件包的最新版本的更新,解决了“没有任何测试与给定的测试用例过滤器FullyQualifiedName相匹配的问题”:
Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework
答案 12 :(得分:3)
我的情况略有不同,但这是Google的最高结果,所以我也将回答我的问题。我可以运行测试,但是实际上只有大约一半运行了,没有错误输出。
最终,我调试并逐步完成了所有测试,并在创建某些模型的测试实例时遇到了Stack Overflow Error
。
在测试实例方法中,子模型创建了父级,而父模型创建了子级,从而创建了无限循环。我从孩子那里删除了父创建的东西,现在我所有的测试都能正常工作!
答案 13 :(得分:3)
在我的情况下,这是因为解决方案中的一个测试项目安装了MSTest.TestFramework和MSTest.TestAdapter nuget软件包,而其他项目则没有。显然,在解决方案中的一个项目中安装了这些软件包之后,才需要运行这些软件包。
通过在缺少它们的测试项目上安装这些软件包来解决此问题。
答案 14 :(得分:2)
答案 15 :(得分:2)
这个问题已经有很多答案,但是我有不同的情况和解决方案。
我们将要测试的类型的功能从一个类移到了一个新类,因此创建了一个新的测试类,而旧的测试类最终为空。
原文:
损坏:
已修复:
清理项目,关闭Visual Studio,删除TestResults文件夹,然后重新启动VS,然后重新生成项目。 (仅此一项就可以解决您的问题,但对我而言,直到删除旧的测试类才够用。)
答案 16 :(得分:2)
当正在运行的测试方法抛出StackOverflowException,使测试运行程序中止测试运行并导致输出0 tests run
时,也会观察到此问题。
要找到问题的根源并解决,请在TestInitialize和TestMethod装饰方法的开头都设置一个断点,在调试模式下运行单元测试,继续执行(F10),直到出现异常被抛出。
答案 17 :(得分:1)
我将“调试”更改为“发布”,并且再次起作用(任何CPU。)
答案 18 :(得分:1)
对我有用的是删除bin文件夹,然后重建项目。
答案 19 :(得分:1)
好吧,我知道我参加聚会迟到了,但是在这里记录我的答案,以防万一有人面临与我类似的问题。我多次遇到过这个问题。这两个步骤90%都解决了
project > properties > Build > Platform target > x64 (x32)
Test -> Test Settings > Default Processor Architecture > X64 (x32)
但是我发现了一个更常见的原因。解决方案文件经常更改开发人员系统,并且它们开始指向错误的 MSTest.TestAdapter。特别是如果您使用 nuget 包的自定义路径。 我通过
解决了这个问题在记事本中打开 .csproj 文件。
在导入时手动更正对 MSTest.TestAdapter 的引用 像这样的说明。
答案 20 :(得分:1)
确保您将测试项目与您的主应用程序项目一起引用。
答案 21 :(得分:1)
我设法找出了 VS 2019/2022 跳过一些测试的原因,方法是运行带有blame 选项的测试 cli:
vstest.console.exe myproject-test.dll /blame
这将生成一个带有“Completed="False”的测试的 xml 文件。
就我而言,测试主机进程在运行该测试时由于内存访问冲突而崩溃。内存访问冲突是由无限递归引起的。您可以右键单击并调试该特定测试。
答案 22 :(得分:1)
答案 23 :(得分:1)
值得一提的是,有时NUnit Test Adapter文件在用户文件夹中被损坏 C:\ Users [用户] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll 在Windows 10上运行,这会导致Test Explorer停止正常工作。
答案 24 :(得分:1)
也许这是一个无限循环。
我几乎有一半的测试没有运行。我对代码所做的新更改带来了创建无限循环的测试。解决此问题(向正确的方法调用添加正确的参数)后,每个测试都正常运行。
希望这可以帮助任何人 - 如果您要向其他人的代码添加新逻辑,请尝试调试未运行的测试,也许您也遇到了无限循环,而 VS 只是停止了测试。
答案 25 :(得分:1)
我可以从您的属性中得知您正在使用MSTest。我有一个类似的问题:我的测试显示在“测试资源管理器”中,但是当我尝试运行它们(通过选择“全部运行”或单独选择它们)时,它们不会。
我的问题是我从一个空的.NET标准类库项目手动创建了单元测试项目。我已经安装了MSTest.TestFramework
NuGet软件包,但没有安装MSTest.TestAdapter
软件包。一旦我安装了适配器软件包,它们就会按预期运行。
回想起来似乎很明显,但是当您从模板创建单元测试项目时,您将这些事情视为理所当然。
答案 26 :(得分:1)
这里是未标记为要构建的测试项目:
Build-> Configuration Manager ...->检查测试项目的构建
答案 27 :(得分:1)
对我来说,在基类中拥有一个名为TestContext的属性会导致此行为。例如:
[TestClass]
public abstract class TestClassBase
{
protected object TestContext { get; private set; }
}
[TestClass]
public class TestClass : TestClassBase
{
// This method not found
[TestMethod]
public void TestCase() {}
}
答案 28 :(得分:1)
对我来说,解决该问题的方法是升级MS.Test nuget程序包
答案 29 :(得分:0)
自从出现此类错误以来,我发布了问题/解决方案:
症状:
问题:
代码中存在错误,该错误在另一个线程内引发异常。所有测试断言都通过了,但是它取消了测试执行。 我可以在“测试输出”(NullException)中看到错误。
答案 30 :(得分:0)
答案 31 :(得分:0)
对我来说(不是一个解决方案),它是在菜单[测试]-> [测试设置]-> [{当前文件}]中取消选择.testsettings文件,以取消选中当前使用的文件。
在我看来,它是这样开始的。
<TestSettings name="Local (with code coverage)" id="e81d13d9-42d0-41b9-8f31-f719648d8d2d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Deployment>
<DeploymentItem filename="ConfigurationImportExportTest\Configurations\" />
<DeploymentItem filename="output\Debug\" />
</Deployment>
<Execution>
显然,DeploymentItem会干扰。
因为这在“输出”标签中:
Warning: Test Run deployment issue: The assembly or module 'Microsoft.SqlServer.Management.SqlParser' directly or indirectly referenced by deployment item 'output\Debug\' specified by the test settings was not found.
.... more of the same
这并不能告诉我很多事情。
似乎这与所有项目将其编译产品放在一个公用\output\Debug
文件夹中的方式有关
但是这似乎并没有阻碍它。 它发出了另一条警告,提示诸如
A testsettings or runsettings file with `ForcedLegacyMode = TRUE or VSMDI files are not supported by MSTest-V2.
那似乎阻止了它。
答案 32 :(得分:0)
相同的问题。实际发生的是,正在运行的测试试图发现我已加载的网站项目中的测试(该网站内部存在一些有关角度角度的茉莉花规格)。
这导致跑步者在试图加载一些NodeJS容器时挂起
从Microsoft.NodejsTools.TestAdapter.TestContainer更新容器
我从解决方案中删除了网站(显然,只是解决方案,而不是删除网站!)
我还必须清除.vs目录中TestStore文件夹下的一些损坏的配置数据。
完成这两个步骤后,事情神奇地重新开始工作
答案 33 :(得分:0)
还有另一个荒谬的案例:同一解决方案中的两个项目以某种方式发生了相同的ProjectId
-其中一个是测试项目,并且使Test Runner感到困惑。
将测试项目删除和读取到解决方案后,更改了ProjectId
并解决了问题。
答案 34 :(得分:0)
我添加了 <PackageReference Include="NUnit3TestAdapter" Version="3.16.1"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference>
在我的 Test.csproj 文件中
答案 35 :(得分:0)
我也遇到了这个问题,我的解决方案是我需要将测试类设为“公开”。 我通过 VS2019 通过创建单元测试向导创建了测试类,默认情况下它不公开。
答案 36 :(得分:0)
我在 Visual Studio 2019 Community 版本 16.9.1 中使用 selenium NUnit 测试时也遇到了这个问题。一些建议是使用旧版本。但就我而言,实际的解决方案是将 Microsoft.NET.Test.Sdk" Version="16.0.1"
包添加到项目中。
答案 37 :(得分:0)
我从测试资源管理器中选择了“调试选定的测试”而不是“运行选定的测试”。
答案 38 :(得分:0)
根据安装的运行时,您可能需要选择:
[右键单击测试项目] -> 属性 -> 构建 -> 平台目标 - 例如x86
将其设置为 x64 会导致“找不到框架‘Microsoft.NETCore.App’,版本‘3.1.0’。”测试错误输出中的错误。
答案 39 :(得分:0)
答案 40 :(得分:0)
我遇到了类似的问题,尝试了所有发布的解决方案,但没有成功。 2 天后最终确定是 OneDrive 导致了问题。
关闭 OneDrive,稍等片刻,重新启动 VS,BAM 又开始工作了!
答案 41 :(得分:0)
对我来说,重新启动VS2017无效。我必须清理sln,然后找到一个文件,其中包含未运行的测试,并且仅运行该文件。之后,我确实运行了所有程序,并且再次正常运行。
答案 42 :(得分:0)
在我的情况下,我有一个async void
方法,我用async Task
代替了,所以测试按预期运行:
[TestMethod]
public async void SendTest(){}
替换为:
[TestMethod]
public async Task SendTest(){}
答案 43 :(得分:0)
就我而言,我已经安装了NUnit和NUnit3TestAdapter的3.11.0
版本,但是在项目文件中有旧版本的2.6.4
引用。不会随新安装一起删除。
NUnit
和NUnit3TestAdapter
,这修复了我项目中的引用。PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
NUnit
和NUnit3TestAdapter
。PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter
答案 44 :(得分:0)
Clean-Rebuild
解决方案对我有用。
答案 45 :(得分:0)
答案 46 :(得分:0)
我正在使用XUnit,但缺少xunit.runner.visualstudio
软件包。安装它并运行我的测试。
答案 47 :(得分:0)
对我来说,这是由于 VS扩展来衡量代码覆盖率。它无法引用特定的程序集,因此将无法运行任何测试。使用以下命令,可以从命令行正常运行测试:
dotnet test
要解决此问题,您可以选择将 ALL 依赖项复制到Test项目的调试文件夹中。这样可以确保可以解析任何程序集,因为不会删除“未使用”的程序集。您可以将以下内容添加到您的Test项目.csprog文件中:
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
答案 48 :(得分:0)
我有不同版本的NUnit(3.11.0)和NunitTestAdapter(3.12.0)nuget软件包。当我将NUnit更新为3.12.0时,Visual Studio进行了测试。
答案 49 :(得分:0)
我遇到了同样的问题,但是当我在实际桌面上创建工作副本时,我的问题得到解决。我遇到的问题是因为项目文件夹位于网络驱动器上,并且由于某种原因无法在网络驱动器上加载依赖项。希望这对某人有帮助。
答案 50 :(得分:0)
使用.Net Core / xUnit / FluentAssertions堆栈时,我的症状与OriolBG类似,但是对于我来说,为项目更新Microsoft.NET.Test.Sdk nuget包确实有用。
答案 51 :(得分:0)
就我而言,它可以更新MSTest nuget软件包。即使在空白的MSTest项目上,也可以重现此问题,并更新工作包。
答案 52 :(得分:0)
我发现在项目中它没有引用 Microsoft.VisualStudio.QualityTools.UnitTestFramework 程序集。相反,它引用的是 Microsoft.VisualStudio.TestPlatform.TestFramework 和 Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions 。当我删除这两个引用并将引用添加到 Microsoft.VisualStudio.QualityTools.UnitTestFramework 程序集时,以前标记为蓝色感叹号的测试突然变为活动状态并开始工作。
答案 53 :(得分:0)
我解决的问题与这里的任何解决方案完全不同:
我的每个测试都调用了一个函数,该函数又调用了它自己,这意味着它不会终止:
public GoogleIntent CreateIntent(BotPath botpath)
{
return CreateIntent(botpath);
}
答案 54 :(得分:0)
具有相同的症状,在我的情况下,问题是 dotnet核心SDK版本。
这些项目的目标是2.2,并且能够使用3.0进行构建。安装最新的2.2 SDK版本后,它们便可以运行。
答案 55 :(得分:0)
更新到Visual Studio 16.4.1之后,我遇到了同样的问题。 转到测试资源管理器->设置按钮-> AnyCPU项目的处理器体系结构-> x64
答案 56 :(得分:0)
将测试项目升级到最新的目标框架版本。
我正在使用Visual Studio 2019和目标框架4.5,该框架的支持在2016年终止,跳转到4.7解决了我的问题。
答案 57 :(得分:-1)
这在 VS2019 中对我有用。
将测试移至新的 NUnit 3 测试项目。所有测试按原样运行。
答案 58 :(得分:-2)
尝试从测试方法上方删除[Ignore]
属性。