Xunit单元测试无法运行

42

我完全卡在这个问题上了。我的团队在服务测试项目中拥有一个单元测试项目。测试在测试浏览器窗格中被发现,但是当我尝试运行测试时,出现了以下错误:

“找到具有相同uri“executor://xunit/VsTestRunner2”的多个测试适配器。 忽略适配器'Xunit.Runner.VisualStudio.TestAdapter.VsTestRunner'。请卸载冲突的适配器以避免此警告”

“[xUnit.net 00:00:00.0251250] 跳过:(无法找到相关程序集'Microsoft.Extensions.DependencyModel, Version=1.1.0')”

“C:\中没有可用的测试。确保已注册测试发现器和执行器,并且平台和框架版本设置正确,然后重试。”

上下文信息:

  • Xunit 2.2.0
  • Visual Studio 15.5.2
  • Windows 10 1709 Build: 16299.125

我的测试项目project.json文件:

{
   "version": "1.0.0-*",
   "testRunner": "xunit",
    "dependencies": {
       "dotnet-test-xunit": "2.2.0-preview2-build1029",
       "Microsoft.AspNetCore.Mvc.ViewFeatures": "1.1.3",
       "Microsoft.DiaSymReader": "1.0.8",
       "Microsoft.DiaSymReader.Native": "1.4.1",
       "Microsoft.Extensions.Logging.Abstractions": "1.1.2",
       "Microsoft.Extensions.Testing.Abstractions": "1.0.0-preview2-003121",
       "Newtonsoft.Json": "9.0.1",
       "WebServices": "1.0.0-*",
       "xunit": "2.2.0",
       "xunit.abstractions": "2.0.1",
       "xunit.assert": "2.2.0",
       "xunit.core": "2.2.0",
       "xunit.extensibility.core": "2.2.0",
       "xunit.extensibility.execution": "2.2.0",
       "xunit.runner.utility": "2.2.0"
   },
   "frameworks": {
    "net461": {
        "dependencies": {
            "Microsoft.NETCore.Platforms": "1.1.0"
        }
    }
}

奇怪的是这个对我的团队成员有效,但对我无效。我们环境的差异在于:他们的Windows和Visual Studio版本比我更新一两个版本。

有人知道解决方法吗?

9个回答

58
安装或更新“xunit.runner.visualstudio”包对我有帮助。在此之前,它无法与框架462一起使用。

1
你节省了我的时间,我从MS Tests转移到xunit时出现了“未发现测试”的消息。添加xunit.runner.visualstudio解决了我的问题。谢谢! - Ambuj

42

我遇到了同样的问题,我通过将Visual Studio 2017从15.5.2更新到15.5.4并更新我的测试项目引用来解决了它:

<ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170628-02" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>

至:

<ItemGroup>
    <PackageReference Include="xunit" Version="2.3.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
</ItemGroup>

重新启动 Visual Studio(显然,即使您已经更新了版本,VS 仍会缓存并使用先前的版本)。

不确定这三个方法中的哪一个或哪些组合修复了它。


1
谢谢!那确实是一个很烦人的问题! - CMR
官方文档显然没有经过测试:https://github.com/dotnet/samples/tree/master/core/getting-started/unit-testing-using-dotnet-test - Jeremy Thompson
3
然而,这个技巧在针对 .net core 项目的 Visual Studio 2017 中不起作用。 - alerya
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170628-02" /> 请修复它。 - Pavel Aslanov
1
在使用.NET 6和xunit的VS 2022中,需要安装Microsoft.NET.Test.Sdk。我还添加了xunit.runner.visualstudio。 - Tore Aurstad

11

我遇到了同样的问题,但我已经安装了Visual Studio 2017 15.5.4。为了让它正常工作,我更新了所有与xunit相关的引用,现在我的.csproj相关引用看起来像这样:

<ItemGroup>
   <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
   <PackageReference Include="xunit" Version="2.3.1" />
   <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>

我不太确定哪里有问题,不过我的建议是确保这些引用在csproj中,并且具有这些最低版本。


你有NetCore项目吗? - alerya
@alerya - 是的,我是。 OP还建议使用.NET Core,因为它支持project.json。 - Alexei - check Codidact
感谢你帮助我。 - nim

4
我遇到了与你类似的问题,提示“找不到依赖程序集”;而实际上,该程序集存在并可供 xUnit VS 运行器使用。但实际问题是,我将 Visual Studio 默认设置为使用32位测试运行器。无法找到的“依赖程序集”与正在使用的xUnit测试运行器具有不同的处理器架构。
解决方法如下所述:此处提到,从Visual Studio菜单中,转到“测试 -> 测试设置 -> 默认处理器架构”,如果您正在使用64位程序集,则将其设置为“X64”,如果您正在使用32位程序集,则将其设置为“X86”。xUnit VS 运行器给出的错误信息很容易让人误解这个问题。
我在新机器上安装Visual Studio时遇到了这个问题。测试可以在我的台式机上在Visual Studio中运行,但不能在我的笔记本电脑上运行。

实际上,我的程序集都是针对“任何 CPU”的。 - alerya
1
还有,我已经更改了这些默认的架构!但是没有任何帮助。 - alerya
2
我所有的程序集也都是“Any CPU”。不幸的是,我从未找到这个问题的真正原因。 :-( - Michael Yanni
似乎这是来自Visual Studio的问题,重新安装它会更快。 - alerya

0

如果您在使用Visual Studio时遇到的问题是测试运行器输出似乎为空,请检查相关按钮(下面的白色框)是否全部选中。

Check the white boxes


0

如果您在同一台Visual Studio(或任何其他Visual Studio实例)上运行项目,请停止它。虽然我知道这很尴尬,但它可以解决问题。


0

对我来说,关闭并重新打开Visual Studio就可以解决问题。


-1

我遇到了同样的问题,我安装了以下 NuGet 包

 <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
  <PackageReference Include="xunit" Version="2.4.1" />
  <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">

1
你的回答与被接受的答案有何不同或增加了什么价值?或者与这个答案这个答案相比呢?除了版本号之外,你的答案基本上是相同的,因此如果你有价值可添加,请编辑现有的答案,否则请考虑不回答。 - slugster

-2

最近在 VS 2019 中遇到了这个问题。 安装 VS.QualityTools.UnitTestFramework NuGet 可以解决此问题。


2
欢迎来到本站!你所建议的内容已经在至少三到四个答案中得到了覆盖,因此请考虑给现有答案之一点赞,而不是重复已经说过的内容。 - slugster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接