没有找到测试。确保安装的测试发现者&执行者,平台和框架版本设置是适当的,然后再试一次

时间:2016-01-14 13:02:07

标签: unit-testing tfs build tfs2015

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

我收到以下错误:

  

未找到测试。确保安装的测试发现者&执行者,平台和框架版本设置是合适的,然后再试一次。

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

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

33 个答案:

答案 0 :(得分:42)

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

如果您正在测试的项目的平台目标设置为x64,则会发生这种情况。

Screenshot of test settings

答案 1 :(得分:27)

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

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

Install-Package NUnitTestAdapter

正如Maurice在NENit3的这篇文章的评论中提到的那样使用以下NUGET package(在链接上寻找其他工具。即:dotnet CLI和Paket CLI)

Install-Package NUnit3TestAdapter

希望这有帮助。

答案 2 :(得分:15)

就我而言,不得不:

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

2)添加nuget包xunit.runner.visualstudio

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

答案 3 :(得分:10)

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

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

答案 4 :(得分:7)

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

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

答案 5 :(得分:6)

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

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

答案 6 :(得分:4)

我在VSTS中使用.Net 4.6.2遇到了同样的问题。如果您从VSTS控制台输出中看到此信息,则@Sushil提供的解决方法仍然适用于VSTS并且是必需的。不幸的是,Microsoft提供的“测试程序集”任务通过了,所以除非你检查输出并找不到实际执行的测试,否则你甚至不知道存在问题!

VSTS Test Fix

答案 7 :(得分:3)

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

答案 8 :(得分:2)

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

  

无法使用TFS 2015 UPdate1作为XAML TFS Build的一部分运行.Net 4.6.x单元测试   的来源: https://connect.microsoft.com/VisualStudio/feedback/details/2245723

以下是一个类似的问题供您参考:Unable to run .Net 4.6 Unit tests of TFS 2015 XAML build server

答案 9 :(得分:2)

我在VS 2017& 4.6.2测试项目采用以下步骤:

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

答案 10 :(得分:2)

确保已安装“ Microsoft.NET.Test.Sdk” nuget。

答案 11 :(得分:1)

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

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

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

答案 12 :(得分:1)

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

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

enter image description here

答案 13 :(得分:1)

我通过重新安装该项目的所有与测试相关的NuGet软件包来解决此问题: Xunit,Xunit.runner.vistualstudio,Microsoft.Net.Test.Sdk

答案 14 :(得分:1)

我使用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”

答案 15 :(得分:1)

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

答案 16 :(得分: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>来解决此问题

答案 17 :(得分:0)

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

#[derive(Debug)]
pub struct Foo {
    pub bar: u8,
    pub baz: u16,
    dummy: bool,
}

impl Foo {
    pub fn new(bar: u8, baz: u16) -> Foo {
        Foo {bar, baz, dummy: true}
    }
}

我的 .csproj 文件

dummy

答案 18 :(得分:0)

显然,这个问题是由具有各种情况的人们发现的,我的答案将涵盖在 .NET Core 项目上使用上的构建管道运行 XUnit 测试> Azure DevOps ,但也可能对其他人有帮助。

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

如果您使用的是不使用yaml的较旧管道,则应该可以使用相同的选项。 This answer涵盖了添加框架的过程,我假设还会有一个选项“如果未运行最少数量的测试则失败”或类似的选项。

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

如果您正在使用多阶段构建在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

答案 21 :(得分:0)

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

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

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

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

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

答案 22 :(得分:0)

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

使用 VS 2019 v 16.8.0 在 .NET Framework 4.8 上测试项目 配置为调试/任何 CPU

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

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

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

答案 23 :(得分:0)

在命令程序中添加TestAdapterPath之后,对我来说是有效的:

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

在我的情况下,重新安装Nunit3适配器,删除临时文件夹,更改体系结构并没有任何效果。这是由于守护程序Resharper引起的。

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

可以解决问题。

答案 26 :(得分:0)

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

enter image description here

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

  • 首先转到“扩展和更新”,安装NUnit3测试适配器。如果 您已经拥有,只需启用它即可。

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

  • 之后,重新构建您的测试项目,所有测试用例将 确定后,您就可以开始运行测试用例了。

答案 27 :(得分:0)

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

答案 28 :(得分:0)

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

例如:

class ClientTests

输出错误:

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

更正:

public class ClientTests

答案 29 :(得分:0)

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

答案 30 :(得分:0)

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

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

(该字段还包含/platform:x64

答案 31 :(得分:0)

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

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

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

答案 32 :(得分:-1)

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

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

希望这对所有人都有帮助。