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

No test found. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again

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

我收到以下错误:

No test found. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.

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

现在这是 .Net 4.6 的已知问题。

Unable to run .Net 4.6.x unit tests as part of a XAML TFS Build with TFS 2015 UPdate1 Source:https://connect.microsoft.com/VisualStudio/feedback/details/2245723

这里有个类似的问题供大家参考:Unable to run .Net 4.6 Unit tests of TFS 2015 XAML build server

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

这是 Team Foundation Server 2015 RTM + 更新 1 中的一个已知问题,将在更新 2 中修复,reference

@Sushil here 描述了一种解决方法,其中包括添加一个 .runsettings 文件,强制测试运行器使用旧的 .Net 框架(请注意,您必须通过 "Add/Edit Test Run" 对话框,因为直接在构建过程编辑器中添加它会被忽略)。

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

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

Install-Package NUnitTestAdapter

正如 Maurice 在对此 post 的评论中提到的那样,NUnit3 使用以下 NUGET package(在 link 上寻找其他实用程序,即:dotnet CLI 和 Paket CLI)

Install-Package NUnit3TestAdapter

希望对您有所帮助。

我 运行 在 .Net 4.6.2 的 VSTS 中遇到同样的问题。如果您从 VSTS 控制台输出中看到这一点,@Sushil 提供的解决方法在 VSTS 中仍然有效并且是必需的。不幸的是,Microsoft 提供的“测试程序集”任务通过了,因此您甚至不知道存在问题,除非您检查输出并找到实际执行的测试 none!

这个问题在 Visual Studio 2017 年再次出现。 很可能是另一个错误,但结果相同。

一种似乎有效的解决方法是从受影响的计算机上卸载 Microsoft Visual Studio 2017 Remote Debugger。

就我而言,我必须:

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

  2. 添加nuget包xunit.runner.visualstudio

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

我正在使用 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。

然后一切正常。希望这对某人有所帮助。

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

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

我通过以下步骤在 VS 2017 和 4.6.2 测试项目中解决了这个问题:

  1. 删除对 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 和扩展
  2. 的引用
  3. 安装 Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated 核聚变 包裹

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

在 TFS 2017 中使用带有构建管道的 .Net Core,我的 Visual Studio 测试步骤在没有实际执行任何测试的情况下通过。必须编辑步骤,"Advanced Execution Options" -> "Other console options" 以包括:

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

(该字段还包含 /platform:x64

在 Visual Studio 2017 年,我只是卸载并重新安装 NUnitTestAdapter 或安装新包,如 NUnitTestAdapter.WithFramework 包,问题消失了。

确保您已安装 "Microsoft.NET.Test.Sdk" nuget。

我遇到了这个错误并且能够解决它。

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

我收到此错误是因为我的单元测试 class 不是 public。

例如:

class ClientTests

输出错误:

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

更正:

public class ClientTests

我在 VS 2017 中尝试 nUnit 时遇到了类似的问题,它不是核心项目。 安装 NUnit3TestAdapter 解决了这个问题。

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

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

我遇到了同样的问题。我正在使用 Visual Studio 2017 社区版。

我使用这些步骤成功地发现了我所有的测试用例并成功地 运行 它:

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

  • 重启你的Visual Studio2017,会自动提示
    安装你的扩展,如果提示说结束任务继续
    安装,直接点击"End Task".

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

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

点击设置文件取消了检查,测试 运行 我的测试成功了。

在我的案例中,重新安装 Nunit3 适配器、删除临时文件夹、更改体系结构,但没有任何效果。这是因为 Daemon Resharper 导致的问题。

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

这解决了问题。

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

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

  1. 从“工具”>“NuGet 包管理器”将 MSTest.TestAdapter 和 MSTest.TestAdapterFramework 包更新到 1.4.0。
  2. 清洁溶液并再次 运行 测试。

我不认为版本有什么特别之处,但更新它肯定会清除 solution/project.

中任何错误的引用

在指挥官中添加 TestAdapterPath 后,它对我有用:

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

在我的案例中,测试被发现了,但是 运行 导致了 "Test not Available..." 和(著名的):"Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again."

该错误与 Visual Studio 无关(通过 dotnet CLI 工具和近乎裸露的 UNit 测试进行测试)并且仅在针对 .NET 4.7.1 时出现。 dotnetcore 应用程序工作正常。

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

"Either assembly contains no tests or proper test driver has not been found."

错误是因为在(映射的)网络驱动器或共享上找不到 test-adapter,解决方法是 将其复制到本地 并重新运行。

如果您是 运行,您的测试在 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

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

这个基本修复对我有用。

尝试 运行 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

中的 <runtime> 下添加 <loadFromRemoteSources enabled="true"/> 来解决这个问题

我使用 MSTest。

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

的引用

然后安装最新版本的 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"

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

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

希望对大家有所帮助。

我通过在我的项目中安装 NUnit3TestAdapter NuGet 解决了这个问题 (https://www.nuget.org/packages/NUnit3TestAdapter/)。

dotnet add package NUnit3TestAdapter --version 3.17.0

我的 .csproj 文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
    <PackageReference Include="NUnit" Version="3.12.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
    <PackageReference Include="RestSharp" Version="106.11.7" />
  </ItemGroup>

</Project>

这个问题显然是由具有一系列场景的人发现的,我的回答将涵盖 运行ning XUnit.NET 上的测试Core 项目在 Azure DevOps 上使用构建管道,但也可能对其他人有所帮助。

  • 确保您已根据 .
  • 从 nuget 安装了 XUnit 测试适配器
  • 在构建管道的 yaml 中,将 otherConsoleOptions: '/framework:.NETCoreApp,Version=v3.1' 添加到 VSTest@2 步骤的 inputs 中(版本号设置为您正在使用的任何版本的 .NET Core ).有关详细信息,请参阅 this documentation
  • 虽然这不是强制性的,但我建议还添加 failOnMinTestsNotRun: true 以便构建管道在零测试 运行.
  • 时报告失败
  • 如果您 运行 此时构建,您可能会发现您的测试 运行 但管道随后给出错误 The library 'hostpolicy.dll' required to execute the application was not found。您可以通过将过滤器从默认的 **\*test*.dll 更改为 **\*test.dll(注意已删除的星号)或与您的测试项目的 DLL 相匹配的其他模式来解决此问题。原因是 XUnit 在输出目录中放置了一个名为 testhost.dll 的文件,如 this github issue.
  • 中所述

如果您使用的是不使用 yaml 的旧管道,则应该可以使用相同的选项。 包括添加框架,我假设还会有一个选项“如果测试的最小数量不是 运行 则任务失败”或类似的选项。

我刚遇到这个问题。看起来可能有很多原因。 在我的例子中,我正在尝试一些代码,因此,我重命名了项目,将其删除..再次添加它......突然之间,我的单一测试停止工作并且测试输出 window 是显示此错误: “未找到测试。确保已安装的测试发现者和执行者、平台和框架版本设置合适,然后重试” 调试输出显示与平台相关的错误: “以下 dll 与当前设置不匹配,即 .netframework、版本 4.5 和平台 X86。”

使用 VS 2019 v 16.8.0 .NET Framework 4.8 上的测试项目 配置为Debug/AnyCPU

尝试了很多东西后,解决方案是

  • 关闭Visual Studio
  • 重命名保存您的解决方案的文件夹。例如:C:\Git\Solution 到 C:\Git\Solution2
  • 打开 VS 并加载您的解决方案。尝试 运行 测试。

这对我有用,希望对你有用。

每次要设置单元测试的时候我经常来这个论坛。这次我发现我忘记在我的单元测试中将 [Test] 属性添加到我的方法中 class(使用 NUnit)。

我刚发现 Visual Studio 测试资源管理器有时会取消 select 所有测试。当我单击其中一个 pass/fail 图标时,测试突然出现在显示屏上。

哇,没想到。

我安装了 nunit3adapter 包,它在我的测试日志中对我有效:
-->(NUnit3TestExecutor discovered 6 of 6 NUnit test cases using Current Discovery mode, Non-Explicit run)