2

我正在使用 dotCover 命令行工具对一些测试进行覆盖。为了让它运行,它需要接收“目标可执行文件”的路径作为参数,在我的例子中是 Nunit,在我的例子中是“ Target Arguments”是我传递给 Nunit 的参数。问题是我传递给 Nunit 的参数之一是带有空格的路径。当我将 Nunit 的参数传递给 dotCover 时,它也被引号包围,因为它有空格。因此,例如,为了简单地在 nunit 上运行测试,我运行以下命令:

"%NunitDir%\nunit-console-x86.exe" /nologo /noshadow "%DllDir%\Tests.dll" 
 /config=Release /domain=%Domain% /xml=%resultDir%\NUnitTestResults.xml

并且要对测试进行覆盖,我需要运行以下内容:

set NunitArgs=/nologo /noshadow "%DllDir%\Tests.dll" 
 /config=Release /domain=%Domain% /xml=%resultDir%\NUnitTestResults.xml

%dotCoverDir%\dotCover.exe cover /TargetExecutable="%NunitDir%\nunit-console-x86.exe" 
 /TargetArguments="%NunitArgs%" /Output="%outputDir%\NUnitTestResults.xml" 

问题是NunitArgs已经包含引号,当我运行 dotCover 命令时,它只读取从第一个引号到第二个引号的参数。

4

1 回答 1

2

尝试/TargetArguments="%NunitArgs:"=""%"甚至/TargetArguments="""%NunitArgs:"=""%"""

阅读David Deley如何解析命令行参数© 2009(2014 年更新)(尤其是Windows®:4. 每个人的解析方式不同)。祝你好运!

于 2015-07-06T12:29:26.640 回答