.NET 6项目中NUnit3TestAdapter默认执行Explicit测试的异常问题
问题
我有一个基于.NET 6的NUnit单元测试项目,其中包含如下标记了[Test]和[Explicit]特性的测试方法:
public class Class1 { [Test] [Explicit] public void Hello() { Assert.That(1 == 1, Is.True); } }
在Visual Studio 2022测试资源管理器中点击「全部运行」时,该项目会尝试执行这个标记了[Explicit]的测试,但同一解决方案内其他项目的[Explicit]特性正常生效(不会被自动执行)。
我怀疑项目里存在控制测试发现/执行的特殊设置,但未找到相关配置。项目的NuGet包引用如下:
<ItemGroup> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" /> <PackageReference Include="NSubstitute" Version="5.3.0" /> <PackageReference Include="NUnit" Version="4.2.2" /> <PackageReference Include="NUnit3TestAdapter" Version="4.6.0" /> </ItemGroup>
已尝试清理解决方案、重启Visual Studio和机器,问题仍未解决。
可能的解决思路
- 检查
.runsettings配置文件:如果项目或解决方案下有.runsettings文件,查看是否存在<RunExplicitTests>True</RunExplicitTests>配置项,若有则改为False,该配置会强制NUnit测试适配器运行所有显式测试。 - 调整NuGet包版本:尝试降级NUnit3TestAdapter或NUnit版本,比如将NUnit3TestAdapter降至4.5.0,或NUnit降至4.1.0,排查是否是版本兼容性导致的异常。
- 检查项目调试参数:右键测试项目→属性→调试,确认是否添加了NUnit的
--run-explicit命令行参数,该参数会强制执行所有显式测试。 - 重置测试资源管理器状态:在Visual Studio中执行「测试→测试设置→重置测试运行配置」,同时手动清除测试缓存目录(路径为
%TEMP%\VisualStudioTestExplorerExtensions),然后重新生成解决方案。 - 检查测试过滤器:在测试资源管理器的筛选器中,确认是否启用了「包括显式测试」选项,若启用则取消勾选。
内容的提问来源于stack exchange,提问作者imran chowdhury
相关产品推荐
相关产品推荐

