Mac系统下NUnit3 inline runsettings命令行参数解析失败如何解决?
问题原因
你遇到的报错本质是zsh的语法解析规则导致,不是dotnet test的功能bug。官方给出的命令示例默认适配的是无特殊字符解析规则的shell环境,而zsh会将命令中未做封装的()、双引号等符号识别为shell语法关键字,不会作为参数传递给dotnet命令,因此抛出解析错误。
解决方法
这里给出两种可用的写法,优先推荐第一种:
- 方法1:将整个runsettings参数段用单引号包裹,单引号内的内容zsh不会做特殊解析,也不需要额外加转义符
示例命令:dotnet test -- 'TestRunParameters.Parameter(name="自定义参数名", value="自定义参数值")' - 方法2:手动对所有特殊字符增加转义符,除了双引号要转义外,括号也需要添加转义
示例命令:dotnet test -- TestRunParameters.Parameter\(name=\"<name>\", value=\"<value>\"\)
Rider运行正常的原因
Rider执行测试命令时会自动对传入的参数做shell兼容的转义封装,不需要用户手动处理shell的特殊字符解析规则,因此直接配置参数即可正常运行,不需要生成临时.runsettings文件。
内容的提问来源于stack exchange,提问作者Peter Mitko
相关产品推荐
相关产品推荐

