MSTest v2面向net5.0-windows运行WinUI 3单元测试失败问题咨询
问题原因
- TFM适配问题:默认MSTest适配器针对纯.NET TFM(如net5.0)做程序集加载逻辑设计,当目标框架改为带Windows版本后缀的
net5.0-windows10.0.19041后,生成的程序集属于Windows专属桌面程序集,旧版本MSTest适配器无法识别这类程序集的依赖加载规则,即便文件物理存在也会判定为找不到文件。 - 架构不匹配:从日志可看出当前运行的是x86版本的测试主机
testhost.x86.dll,如果你的WinUI3项目生成架构为x64,就会出现程序集加载失败,抛出System.InvalidOperationException异常。 - 依赖缺失:Project Reunion 0.8.x版本的WinUI3运行时需要特殊的初始化逻辑,默认MSTest配置没有集成对应的加载逻辑,导致运行测试时无法正常加载WinUI3相关依赖项。
解决方案
- 调整测试项目配置:打开测试项目的
.csproj文件,在PropertyGroup节点中补充以下配置项:
<PropertyGroup> <TargetFramework>net5.0-windows10.0.19041</TargetFramework> <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion> <Platforms>x64;x86</Platforms> <RuntimeIdentifiers>win10-x64;win10-x86</RuntimeIdentifiers> <UseWinUI>true</UseWinUI> <EnablePreviewFeatures>true</EnablePreviewFeatures> <WindowsPackageType>None</WindowsPackageType> </PropertyGroup>
- 统一测试主机架构:在Visual Studio顶部菜单栏选择
测试 > 测试设置 > 默认处理器架构,选择和项目生成架构一致的选项(推荐优先选x64),不要使用默认的自动或x86选项。 - 升级测试相关NuGet包:将以下包升级到对应版本:
Microsoft.NET.Test.Sdk升级到17.0.0及以上MSTest.TestAdapter升级到2.2.10及以上MSTest.TestFramework升级到2.2.10及以上
新版本的测试组件已经适配了带Windows后缀的TFM的程序集加载逻辑。
- 若上述操作后仍无法运行,可在测试项目根目录新建
.runsettings文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <RunConfiguration> <TargetPlatform>x64</TargetPlatform> <DisableAppDomain>true</DisableAppDomain> <DisableParallelization>true</DisableParallelization> </RunConfiguration> </RunSettings>
创建完成后在Visual Studio菜单栏选择测试 > 测试设置 > 选择测试设置文件,选中刚创建的.runsettings文件即可。
内容的提问来源于stack exchange,提问作者JJenkins
相关产品推荐
相关产品推荐

