在 OpenCover 的 psake 脚本中,某些 PC 上的 Exec 命令失败
Exec command failing on some PCs in psake script to OpenCover
我一直在测试 运行使用 OpenCover 对我的单元测试进行覆盖率检查,并创建了一个 powershell 脚本来使用 psake 创建覆盖率报告。
Exec { opencover.console.exe -target:"nunit3-console.exe" -targetargs:"Slu.Taxen.Data.Kol.Test.dll" -register:user -output:"..\Coverage\DataTestResults.xml" -filter:"+[*]* -[Slu.Taxen.Data.Kol.Test*]*" }
这在几台计算机(运行ning windows 10)上都没有问题,但是当我今天在 windows 8.1 机器上尝试时,我收到错误消息:
Incorrect Arguments: The argument '-[Slu.Taxen.Data.Kol.Test*]*' is not recognised
然后:
Error: 14/03/2016 16:49:08:
At F:\Code\Greenbase2\KolAPI\psake.psm1:147 char:17 + throw ("Exec: " + $errorMessage) +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<<==>>] Exception: Exec: Error executing command opencover.console.exe -target:"nu
nit3-console.exe" -targetargs:"Slu.Taxen.Data.Kol.Test.dll" -register:user
-output:"..\Coverage\DataTestResults.xml" -f
ilter:"+[*]* -[Slu.Taxen.Data.Kol.Test*]*" .
但是如果我 运行 直接在我的 windows 8.1 机器上的控制台中执行命令,它就可以正常工作。这向我表明,引起大惊小怪的不是 opencover,而是 Psake 或 powershell。
有什么线索吗?
我们发现使用 powershell,在 powershell 中传递任何包含空格的参数时,将引号放在整个参数周围效果更好 - 参见 usage wiki 例如而不是
-filter:"<filters with spaces>"
做
"-filter:<filters with spaces>"
我一直在测试 运行使用 OpenCover 对我的单元测试进行覆盖率检查,并创建了一个 powershell 脚本来使用 psake 创建覆盖率报告。
Exec { opencover.console.exe -target:"nunit3-console.exe" -targetargs:"Slu.Taxen.Data.Kol.Test.dll" -register:user -output:"..\Coverage\DataTestResults.xml" -filter:"+[*]* -[Slu.Taxen.Data.Kol.Test*]*" }
这在几台计算机(运行ning windows 10)上都没有问题,但是当我今天在 windows 8.1 机器上尝试时,我收到错误消息:
Incorrect Arguments: The argument '-[Slu.Taxen.Data.Kol.Test*]*' is not recognised
然后:
Error: 14/03/2016 16:49:08:
At F:\Code\Greenbase2\KolAPI\psake.psm1:147 char:17 + throw ("Exec: " + $errorMessage) +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<<==>>] Exception: Exec: Error executing command opencover.console.exe -target:"nu
nit3-console.exe" -targetargs:"Slu.Taxen.Data.Kol.Test.dll" -register:user
-output:"..\Coverage\DataTestResults.xml" -f
ilter:"+[*]* -[Slu.Taxen.Data.Kol.Test*]*" .
但是如果我 运行 直接在我的 windows 8.1 机器上的控制台中执行命令,它就可以正常工作。这向我表明,引起大惊小怪的不是 opencover,而是 Psake 或 powershell。
有什么线索吗?
我们发现使用 powershell,在 powershell 中传递任何包含空格的参数时,将引号放在整个参数周围效果更好 - 参见 usage wiki 例如而不是
-filter:"<filters with spaces>"
做
"-filter:<filters with spaces>"