升级Visual Studio 17.4.0后XUnit测试无法执行问题求助
解决Visual Studio 2022 17.4.0中.NET Framework 4.8 XUnit测试无法执行的问题
问题背景
升级Visual Studio 2022到17.4.0版本后,XUnit测试可在测试资源管理器正常显示,但11个测试全部无法执行;项目构建正常,此前版本可正常运行且无报错。已尝试升级VS补丁、.NET Framework版本、XUnit版本,重启、清理重建项目,切换目标处理器架构等操作均无效。项目引用配置如下:
<ItemGroup> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" /> <PackageReference Include="Moq" Version="4.18.2" /> <PackageReference Include="xunit" Version="2.4.2" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="coverlet.collector" Version="3.2.0"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> </ItemGroup>
解决步骤
统一XUnit组件版本
当前Microsoft.NET.Test.Sdk为17.4.0,xunit和xunit.runner.visualstudio版本偏低,存在兼容性匹配问题。将两者同步升级到兼容17.x SDK的最新稳定版,修改后的引用配置如下:<ItemGroup> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" /> <PackageReference Include="Moq" Version="4.18.2" /> <PackageReference Include="xunit" Version="2.5.1" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.5.1"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="coverlet.collector" Version="3.2.0"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> </ItemGroup>禁用测试并行执行
在测试项目根目录新建xunit.runner.json文件,添加以下内容:{ "parallelizeTestCollections": false }右键该文件→属性,设置“复制到输出目录”为“如果较新则复制”,避免并行执行导致的静默故障。
清理测试运行器缓存
关闭Visual Studio,删除以下目录的缓存文件:%USERPROFILE%\AppData\Local\Temp\VisualStudioTestExplorerExtensions%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\17.0_*\TestStore
重新打开VS并重建测试项目。
检查测试项目输出类型
右键测试项目→属性→应用程序,确认输出类型为类库,避免非类库类型导致测试无法触发。排查代码覆盖率工具干扰
暂时移除coverlet.collector引用,重新运行测试。若测试可正常执行,再将coverlet.collector升级到最新版本(如6.0.0)后重新添加。
内容的提问来源于stack exchange,提问作者ddl
相关产品推荐
相关产品推荐

