我遇到了同样的问题,通过在命令面板中输入“重新启动Omnisharp”解决了它。
我尝试直接使用vscode打开测试项目(而不是打开包含测试项目的子文件夹的根项目),现在vscode识别到了Xunit。
然后我再次使用vscode打开了根项目,将Xunit添加到根项目的csproj文件中,在根项目中运行“dotnet restore”,现在测试项目可以识别到Xunit了。
问题在于,vscode(或者是Omnisharp?我不确定)可能仅查看根csproj文件,并忽略任何位于子文件夹中的csproj文件。
以上所有方法都对我无效。
结果我应该检查之前的笔记,因为这是一个使用Xunit的项目中经常出现的问题:
确保所有已安装的Xunit.xxxxxxxxx包版本完全相同。
问题发生在自动更新NuGet包后,此时会安装Xunit 2.4.1(以及其他几个版本为2.4.1的xUnit包)和版本为2.4.3的xunit.runner.visualstudio
包(!)
虽然此NuGet更新期间没有报告任何不良反应,但结果是永久性的构建失败,在其中Fact
和Assert
突然变成未知的,如下所示:
Error CS0246: 无法找到类型或命名空间名称“Fact”(是否缺少 using 指令或程序集引用?) Imazen.Test.Webp
对我有效的方法是回到那个xunit.runner.visualstudio
更新之前并将其还原为2.4.1版本。
顺便说一下,在Visual Studio中,这看起来会像这样(还原/重新安装后):
请注意,包管理器提示可用更新,并且只要再次应用该2.4.3更新,您就回到了原点:一个奇怪的构建失败。
解决方案的关键是所有已安装的xunit包版本都必须相同。 -- 如果只有几个在NuGet上有更新可用,请等待所有xunit包都出现同一版本的更新。
不知道为什么这么讨厌,因为我只观察到与xunit.*
相关的脆弱行为,但这是今年早些时候有效的(我已经忘记了),现在又发生了同样的问题:NuGet xunit包更新必须还原。
@areller的解决方案解决了我的问题。我想扩展他的答案,以提供一些示例代码,以防有其他人不知道该怎么做(特别是如果您像我一样刚开始学习C#)。
首先,我按照此处的指示开始为.NET Core应用程序编写单元测试: https://learn.microsoft.com/en-gb/dotnet/core/testing/unit-testing-with-dotnet-test
然后我遇到了OP提到的同样问题。
首先,我尝试了Claus的解决方法,重新启动了OmniSharp,但它没有解决问题。
然后,按照@areller的建议,我在Tests.csproj
中找到了以下行:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>
我复制了这段代码,并将其粘贴到我的根目录的 .csproj
文件中,因此根目录下的 .csproj
看起来像这样:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>
</Project>
我曾经遇到过同样的问题。我在我的 .Net 5 解决方案中安装了 xunit.extensibility.core (2.4.1),问题得到了解决。xunit.runner.visualstudio (2.4.3) 已经存在。
我也遇到了同样的问题,但是我的情况很简单,只是因为没有安装xunit
。
dotnet add package xunit