找不到测试。确保已安装的测试发现者和执行者,平台和框架版本设置正确,然后重试


95

我正在将现有解决方案升级到.Net 4.6.1,并且无法在服务器构建期间运行我们的单元测试。它们在本地按预期方式运行,并将框架版本翻转回.Net 4.5.1使它们在服务器上再次运行。

我收到以下错误:

找不到测试。确保已安装的测试发现程序和执行程序,平台和框架版本设置正确,然后重试。

我在一个更简单的设置中重现了该问题:

  • 一个带有两个测试的C#单元测试项目的解决方案(一个失败,一个通过)。
  • 使用默认模板(TfvcTemplate.12.xaml)的XAML构建定义
  • 安装了Visual Studio Enterprise 2015 Update 1的TFS 2015 Update 1 XAML生成服务器(具有六个类似的服务器,并且都产生相同的结果)

根据Microsoft的Brian Harry所说,这是他们目前正在调查的错误。它应该在更新2中修复,并应在以后发布临时解决方法。来源:链接
ToreØstergaard,2016年

我对于.NET 3.5 SP1相同的问题在Visual Studio 2013更新5
安德烈·布什曼

@AndreyBushman:错误也可能是在2013U5中,因为它与2015RTM一起发布。但是解决方法也应适用于您的情况。
ToreØstergaard'16

我有一个类似的问题,解决方法只是在测试设置下的vs中,选择正确的默认处理器(32/64)位,而不保留引擎运行时间。(vs 2017.x)
肯尼迪国际赛

Answers:


59

您可以尝试在“测试设置”中将默认处理器体系结构从X86更改为X64。就我而言,这就是问题所在。

如果被测项目的平台目标设置为,则会发生这种情况x64

测试设置的屏幕截图


这为我解决了。就我而言,正在测试的项目和测试项目都设置为x86。测试无法进行,但无法运行。将其更改为“ Any CPU”后,运行测试。
datchung

我只是遇到了同样的问题,这解决了它。我也非常怀疑这可能会对我的主要项目引用产生不利的协同作用,从而突然停止加载特定的DLL,但尚未最终确定这种讨厌的副作用。
艾伦

44

我的构建也没有找到测试。我的设置和用于查找测试的解决方案如下。

我使用VSTS(Visual Studio Team Services),并具有一个配置为在每个版本上刷新NUGET包的版本。我正在使用NUnit,发现运行以下NUGET命令(从Visual Studio中的程序包管理器控制台)将NUnitTestAdapter库添加到我的测试项目中,并且检查packages.config使测试在我的VSTS构建中运行。

Install-Package NUnitTestAdapter

正如Maurice在对NUnit3的评论中提到的那样,请使用以下NUGET程序包(在链接上查找其他实用程序。例如:dotnet CLI和Paket CLI)

Install-Package NUnit3TestAdapter

希望这可以帮助。


10
我目前也在使用VSTS。根据建议,我添加了NUnit3TestAdapter(因为我使用的是NUnit 3.8.1),并且此解决方案解决了我的问题。谢谢您:-)
Maurice Klimek '10

1
Install-Package NUnit3TestAdapter解决了我的问题:)
Bimal Das

26

就我而言,必须:

1)将测试项目转换为netcore 2.0(原为netstandard 2.0)

2)添加nuget包 xunit.runner.visualstudio

参考:http : //www.neekgreen.com/2017/11/20/xunit-no-test-is-available/


2
我也遇到了同样的问题。我正在使用具有.net核心的
xunit

这在带有xunit和.NET Core 2.1的Visual Studio 2017中也为我工作。
ThorkilVærge18年

3
在我的情况下是一个.net 4.6.1项目,因此唯一缺少的是xunit运行程序。安装并工作。
胡安

1
和娟一样 只有亚军包丢失了。在测试项目的程序包管理器中运行此命令即可解决此问题:install-package xunit.runner.visualstudio
Premil

11

我收到此错误,并能够解决它。

  1. 我使用Visual Studio Professional 2017
  2. 在VS中,我导航至工具->扩展和更新
  3. 在菜单顶部,我注意到我的NUnit适配器已禁用
  4. 我点击了[启用]按钮
  5. 我能够毫无错误地启动测试。

是! 并且不要忘记重新启动Visual Studio。这是我所必需的。
Michael Levy

“在菜单顶部”是什么意思?
肖恩·肯德尔

1
@SaiyajinGohan。完成步骤2后,将出现“扩展和更新”窗口。在此窗口的顶部,我看到NUnit适配器已禁用。希望这澄清....
Ĵ伍德

为此,我仍然无法在我正在进行的项目中使用它。幸运的是,这是一个测试项目,下一个工作了。至于为什么仍然是个谜。
肖恩·肯德尔

10

我正在使用MSTest。对我来说,这是版本不匹配,缺少另一个依赖包 -

1)我的程序包文件夹仅包含MSTest.TestFramework.1.2.1程序包。在我的项目文件(.csproj)中,“目标名称”中的引用是MSTest.TestAdapter.1.2.0程序包,该程序包不存在。我的packages.config还引用了MSTest.TestFramework.1.2.0。

2)因此,我从nuget软件包管理器安装了MSTest.TestAdapter.1.2.0,并将MSTest.TestFramework版本与项目和软件包文件中的1.2.0对齐。最后,我在参考中添加了Microsoft.VisualStudio.TestPlatform.TestFramework和Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions。

然后一切都很好。希望这对某人有帮助。


我通过.Net 4.6.1 VS2017碰到了这一点。我最终回滚到1.2.0-绝对要确保您的程序包文件夹或源代码管理中没有两个不同的版本。
杰里米·汤普森

2
我的似乎找到了测试,但是是的,真正的问题是缺少“ MSTest.TestAdapter”。没有好的错误或警告(VS2017 15.8)。尽管没有出现在测试浏览器中,但除了未找到测试外,其他所有程序看起来都不错。...所以当我执行“ install-package MSTest.TestAdapter”时,我的测试突然按预期运行了。谢谢MS-浪费了3个小时...........
James Joyce

1
安装MSTest.TestAdapter 1.4.0在VS 2019中为我做到了。感谢您,我只浪费了30分钟。
furman87 '19

6

此问题再次针对Visual Studio 2017出现。最有可能是另一个错误,但结果相同。

似乎有效的一种解决方法是从受影响的计算机上卸载Microsoft Visual Studio 2017远程调试器。


5
  1. 从NUGET软件包安装Nunit和NUnitTestAdapter最新版本。
  2. 转到->测试->测试设置->默认处理器体系结构->更改为X64
  3. 构建解决方案。
  4. 这将解决单元测试中的“运行测试和调试器”问题,并将开始工作。

在许多方向和建议上敲打我的头后,这实际上对我有用。
rajibdotnet

4

我在使用.Net 4.6.2的VSTS中遇到了相同的问题。如果您从VSTS控制台输出中看到此消息,则@Sushil提供的解决方法仍可在VSTS中使用,并且是必需的。不幸的是,Microsoft提供的“测试程序集”任务通过了,因此,除非您检查输出并发现没有实际执行的测试,否则您甚至根本不知道存在问题!

VSTS测试修复


我的问题是(本地)TFS 2015 Update 1,并且更新2已解决。我不确定VSTS是否存在/存在相同的问题。
ToreØstergaard17年

4

如果您正在使用多阶段构建在docker内部运行测试,则找不到测试。确保不仅复制项目文件,而且复制所有文件,例如Dockerfile部分下面的文件。

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["MainProject/FirstApp.csproj", "MainProject/"]
COPY ["TestProject/*", "TestProject/"]

RUN dotnet restore "TestProject/TestProject.csproj"
RUN dotnet build "TestProject/TestProject.csproj" -c Release
RUN dotnet test "TestProject/TestProject.csproj" -c Release

确实的确咬住了我。我认为这正在发生的线索是它找到了单元测试DLL,但没有在其中找到任何测试。我还发现,将这行插入复制语句后,可以检查复制了什么WAS(此处/ app / tests是Docker映像上的目标目录):RUN file =“ $(ls -al / app / tests) “ && echo $ file(有关echo的更多信息,请参阅此帖子
David Yates

3

我通过以下步骤在VS 2017&4.6.2测试项目中按问题修复了此问题:

  1. 删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll和扩展名的引用
  2. 安装Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated的nuget包



2

我通过重新安装相关的NuGet包项目的所有测试固定的这个问题: XunitXunit.runner.vistualstudioMicrosoft.Net.Test.Sdk


1

我遇到了类似的问题,并注意到以某种方式将app.config文件添加到了我的测试项目中。删除此配置文件已为我修复。


1

我将解决方案扔到堆上。就我而言,我要在现有解决方案中添加几个项目以及针对它们的测试项目。我们正在使用MSTest。在解决方案上启用了以前的UnitTest.testsettings文件,这导致了兼容性问题。

单击设置文件删除了检查,并且我的测试运行成功。

在此处输入图片说明


1

找到了办法!可能不是最正统的,但确实帮了我忙:

  1. 从工具> NuGet包管理器将MSTest.TestAdapter和MSTest.TestAdapterFramework包更新为1.4.0。
  2. 清洁溶液,然后再次运行测试。

我认为该版本没有什么特别之处,但是更新它肯定会清除解决方案/项目中任何不好的引用。


0

这只是为了回顾@Sushil先前提出的解决方案。

这是Team Foundation Server 2015 RTM + Update 1中的一个已知问题,将在Update 2中得到解决,参考

@Sushil 在此处描述了一种解决方法,其中包括添加一个.runsettings文件,该文件强制测试运行程序使用较旧的.Net框架(请注意,您无需通过“添加/编辑测试运行”对话框将其指定为直接添加它在构建过程编辑器中将被忽略)。


0

在TFS 2017中将.Net Core与构建管道结合使用时,我的Visual Studio测试步骤通过了而实际上并未执行任何测试。必须编辑步骤“高级执行选项”->“其他控制台选项”以包括:

/framework:".NETCoreApp,Version=v2.0"

(该字段还包含/platform:x64


0

在Visual Studio 2017中,我只是卸载并重新安装NUnitTestAdapter或安装新的程序包,例如NUnitTestAdapter.WithFramework程序包,问题就消失了。


0

我收到此错误是因为我的单元测试课不是公开的。

例如:

class ClientTests

输出错误:

...\bin\Debug\Tests.dll] UTA001: TestClass attribute defined on non-public class ClientTests

更正:

public class ClientTests


0

我有相同的问题。我正在使用Visual Studio 2017社区版。

在此处输入图片说明

我使用了以下步骤来成功发现所有测试用例并成功运行它:

  • 首先转到扩展和更新,安装NUnit3测试适配器。如果已经拥有,请启用它。

  • 重新启动您的Visual Studio 2017,它将自动提示您
    安装扩展程序,如果提示终止任务以继续
    安装,只需单击“结束任务”。

  • 之后,重新构建测试项目,现在将识别所有测试用例,您现在可以开始运行测试用例。


0

以我为例,重新安装Nunit3适配器,删除临时文件夹,更改体系结构并没有任何效果。它是由于守护程序Resharper引起的问题。

Add or Remove Programs> Find Resharper > Repair > Install again > Restart VS 

这样就解决了问题。


0

如果返回类型错误,则异步测试可能会发生此错误。返回类型应该是Task,而不是void。


0

在Commander中添加TestAdapterPath之后,它对我有用:

vstest.console.exe Xom.Gci.Lvf.FileParserInvoker.UnitTests.dll /TestAdapterPath:"C:\****\****\{SolutionFolder}"

首先,您应该确保测试用例可以在VS IDE中运行。
dixiashi

0

在我的情况下,发现了测试,但是运行导致“测试不可用... ”和(臭名昭著的)“确保测试发现者和执行者已注册,并且平台和框架版本设置正确,然后重试。”

该错误独立于Visual Studio(已通过dotnet CLI工具进行了测试,并且几乎是裸露的UNit测试),并且仅在面向.NET 4.7.1时才发生。dotnetcore应用程序运行正常。

使用Nuint3 CLI运行测试也会 nunit3-console.exe Tests.csproj显示错误:

“要么程序集不包含任何测试,要么找不到合适的测试驱动程序。”

该错误是因为在(映射的)网络驱动器或共享上找不到测试适配器,并通过在本地复制并重新运行来解决。


0

如果您已经在测试项目中安装了测试适配器,请尝试从项目中卸载并再次将其安装到测试项目中。

此基本修复程序对我有用。


0

尝试运行vstest.console.exe--diag:diag.txt和检查输出。对我来说,这是我的工作目录中测试适配器的DLL加载失败:

TpTrace Information: 0 : 14976, 1, 2020/03/10, 15:34:22.120, 57158093583, vstest.console.exe, AssemblyResolver.OnResolve: Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter: Failed to load assembly. Reason:System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Directory\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)

File name: 'file:///C:\Directory\Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information.

我通过在vstest.console.exe.config <loadFromRemoteSources enabled="true"/>下添加来解决此<runtime>问题


0

我使用MSTest。

我从Nuget安装了最新版本的MSTest.TestFramework,并替换为OOB。删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll的引用

然后从neget安装最新版本的Microsoft.TestPlatform

它允许我使用以下命令运行测试:

".\packages\Microsoft.TestPlatform.16.6.1\tools\net451\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" "UnitTestProject1\bin\Debug\UnitTestProject1.dll" /logger:trx

但是我遇到了同样的错误。错误的根本原因是我没有指定测试适配器来解析程序集并查找测试。

解:

  1. 安装一个nuget包“ MSTest.TestAdapter”

  2. 在命令末尾指定测试适配器:

    /TestAdapterPath:".\packages\MSTest.TestAdapter.2.1.2\build_common“


0

对于那些面临类似问题的人。以下是解决方案,请安装SpecFlowPlusRunner。

我已经尝试了其他解决方案,例如重新安装,删除缓存等,但是解决方案实际上是不同的,我们需要为visualstudio 2017安装SpecRun.SpecFlow2.3.0。这解决了问题。

希望这对大家有所帮助。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.