VS2017中XUnit测试可在全部测试运行但播放列表内无法运行
嘿,我碰到过类似的测试适配器冲突问题,咱们一步步来排查解决:
问题分析
你添加xunit.methodDisplay配置后,播放列表运行测试时触发了FileNotFoundException,找不到MSTest的适配器dll,但"全部测试"能正常运行——这说明测试播放列表的加载逻辑和全局测试发现逻辑存在差异,配置变更可能导致VS错误地尝试加载MSTest适配器,而非Xunit的。
解决办法
检查Xunit包版本兼容性
确保你的测试项目里的Xunit相关NuGet包适配VS2017 v15.6.6:xunit:建议用2.3.x或2.4.x版本xunit.runner.visualstudio:至少要2.3.1以上,最好匹配VS版本对应的最新稳定版
打开NuGet包管理器,更新这些包,同时清理掉任何多余的测试相关包(比如不小心安装的MSTest包)。
验证
xunit.methodDisplay配置格式
确认app.config里的配置没有语法错误,正确的写法应该是在<appSettings>节点下添加:<appSettings> <add key="xunit.methodDisplay" value="classAndMethod"/> <!-- 或者你需要的其他值,比如"method" --> </appSettings>避免多余的节点或拼写错误,比如把key写成
xunit.methoddisplay(大小写错误)。清理测试缓存与项目文件
缓存错乱是VS测试常见问题,按以下步骤操作:- 关闭VS,删除测试项目下的
bin和obj文件夹 - 删除VS的测试缓存目录:
%LOCALAPPDATA%\Temp\VisualStudioTestExplorerExtensions - 重新打开VS,右键测试项目选择"重新生成",再尝试运行播放列表
- 关闭VS,删除测试项目下的
检查播放列表文件
用文本编辑器打开你的.playlist文件,确认里面只包含你的Xunit测试项目的测试条目,没有引用MSTest相关的测试或配置。如果发现异常内容,直接删除旧播放列表,重新创建一个新的播放列表(通过测试资源管理器选择测试后保存)。移除无关的MSTest引用
右键测试项目→"引用",检查是否有Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter或其他MSTest相关的dll引用,如果有,直接移除——Xunit测试项目完全不需要这些。
总结
这个问题本质是配置变更后触发的测试适配器加载逻辑混乱,通过清理缓存、验证配置和包版本,基本能解决。如果还是不行,可以尝试修复VS2017(打开VS安装器,选择"修改"→"修复"),确保VS的测试组件没有损坏。
内容的提问来源于stack exchange,提问作者jdmac020

