我正在使用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命令时,它只读取从第一个引号到第二个引号的参数。
答案 0 :(得分:2)
尝试/TargetArguments="%NunitArgs:"=""%"
甚至/TargetArguments="""%NunitArgs:"=""%"""
。
阅读How Command Line Parameters Are Parsed by David Deley © 2009 (Updated 2014)(尤其是Windows®: 4. Everyone Parses Differently)。祝你好运!