You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nunit-console 3.7.0参数错误求助:Jenkins节点升级后测试执行失败

解决NUnit Console 3.7.0升级后的参数错误(E_INVALIDARG)问题

你遇到的这个参数不正确。(异常来自 HRESULT: 0x80070057 (E_INVALIDARG))错误,并不是因为命令参数本身不被支持,而是NUnit 3.7.0版本的引擎在加载测试DLL时的AppDomain安全证据处理逻辑存在兼容性问题。结合你的日志和操作尝试,给你几个针对性的解决方案:

  • 关闭影子复制功能
    NUnit 3.7.0的影子复制机制在部分环境下会和系统安全策略冲突,导致加载DLL时抛出参数错误。你可以在命令中添加--shadowcopy=false参数禁用该功能,修改后的命令如下:

    "E:\tools\NUnit.Console-3.7.0\nunit3-console.exe" --shadowcopy=false --result="unittests.xml;format=nunit2" "EplanImporterTests\bin\Debug\EplanImporterTests.dll" [其他DLL路径]
    
  • 缩短测试DLL的路径长度
    Windows传统的260字符路径长度限制可能会触发这类加载错误,从你的日志看,工作空间路径已经较长。你可以尝试:

    • 缩短Jenkins工作空间的名称(比如把NunitUpdateedbae018改为更简短的命名)
    • 修改测试项目的输出路径,将DLL生成到层级更少的目录下
  • 升级到NUnit Console 3.7.1或更高版本
    这个AppDomain加载的bug在NUnit Console 3.7.1版本中已经被官方修复,你可以跳过3.7.0直接升级到3.7.1或者更稳定的3.8+/3.9+版本,无需降级测试项目引用的NUnit NuGet包(保持3.9版本即可)。

  • 验证测试DLL的完整性与权限

    • 清理Jenkins工作空间后重新构建测试项目,确保生成的DLL文件没有损坏
    • 检查Jenkins运行账号对测试DLL所在目录的访问权限,确保拥有读取和执行权限

如果以上方法都无效,你还可以尝试添加--domain=none参数,强制NUnit在当前AppDomain中运行测试(注意:该参数会降低测试的隔离性,仅作为临时排查手段):

"E:\tools\NUnit.Console-3.7.0\nunit3-console.exe" --domain=none --result="unittests.xml;format=nunit2" [DLL列表]

内容的提问来源于stack exchange,提问作者Nick Otten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:13:55