NUnit测试报OneTimeSetUp仅支持Win10,Windows Server2016下如何绕过?
错误根因
该报错并非Azure DevOps、VsTest或NUnit组件的兼容性问题,本质是你测试用的Chromium内核浏览器(Chrome/Edge)的对应驱动,从2022年底的109版本开始新增了系统版本校验逻辑,识别到运行环境为Windows Server系统时会直接抛出「Only supported on Windows 10」的错误,Windows Server 2016虽然内核版本和Win10一致,但驱动默认会排除Server类系统。
可行绕过方案
- 方案1:降级浏览器与驱动版本
将测试环境的Chrome/Edge浏览器降级到108及更早版本,同时配套使用对应版本的官方驱动,108及之前版本的驱动无系统版本校验限制,可直接在Windows Server 2016上正常运行。 - 方案2:添加驱动启动参数跳过校验(最推荐)
不需要修改现有环境的浏览器、驱动版本,仅需要在初始化Driver实例的代码中,给浏览器配置项添加--disable-os-version-check启动参数,即可强制忽略驱动的系统版本校验逻辑,是改造成本最低、无副作用的方案。 - 方案3:临时修改系统标识绕过校验(仅建议临时测试使用)
打开注册表编辑器,定位到路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,将ProductName的数值从默认的Windows Server 2016临时修改为Windows 10 Pro,测试运行完成后改回原值即可。该方案不需要修改测试代码,但修改系统注册表存在稳定性风险,不建议在生产级测试环境使用。
代码修改示例
你需要在Driver.DriverInstance的初始化逻辑中新增参数配置,以Chrome浏览器为例参考代码如下:
public static IWebDriver DriverInstance { get { if (driver == null) { var options = new ChromeOptions(); // 新增这一行跳过系统版本校验 options.AddArgument("--disable-os-version-check"); // 保留你原有的其他驱动配置逻辑 driver = new ChromeDriver(options); } return driver; } }
修改完成后你原有OneTimeSetUp中的代码不需要做任何调整,直接运行即可消除报错。
内容的提问来源于stack exchange,提问作者Yonatan Levin
相关产品推荐
相关产品推荐

