问题描述
我正在使用Visual Studio 2019在c#中实现CodeCov进行代码覆盖,并且正在使用OpenCover和Xunit。我的解决方案有两个项目(Crossroads和CrossroadsUnitTests)
我已将所需的nuget软件包添加到解决方案中(OpenCover,xunit,xunit.runner.console,xunit.runner.visualstudio),并且我想在本地运行OpenCover命令以生成覆盖率报告,但是看来我有路径中有空格。
下面是我在“程序包管理器”中运行的命令以及收到的错误;
PM> OpenCover.Console.exe -register:user -target:"C:\Users\Mr. Erbynn\.nuget\packages\xunit.runner.console\2.4.1\tools\net46\xunit.console.exe" -targetargs:"C:\Users\Mr. Erbynn\source\repos\Crossroads\CrossroadsUnitTests\bin\Debug\netcoreapp3.1\CrossroadsUnitTests.dll -noshadow" -output:".\coverage.xml" -filter:"+[Crossroads*]* -[CrossroadsUnitTests*]*"
我尝试使用\"
进行转义,但无法正常工作。
以下是我在根解决方案文件夹中运行OpenCover时在Power Shell中收到的命令和错误
C:\Users\\"Mr. Erbynn\"\.nuget\packages\opencover\4.7.922\tools\OpenCover.Console.exe -register:user -target:"C:\Users\\"Mr. Erbynn\"\.nuget\packages\xunit.runner.console\2.4.1\tools\net46\xunit.console.exe" -targetargs:"C:\Users\\"Mr. Erbynn\"\source\repos\Crossroads\CrossroadsUnitTests\bin\Debug\netcoreapp3.1\CrossroadsUnitTests.dll -noshadow" -output:".\coverage.xml" -filter:"+[Crossroads*]* -[CrossroadsUnitTests*]*"
下面是希望的目标测试dll文件;
非常感谢您的帮助或建议。
解决方法
如果您的参数需要转义引号,即将带空格的参数传递给该目标进程,则可以使用
\"
即-targetargs:"\"c:\program files\" xyz"
因此,您的-targetargs
应该如下所示:
// vv---------------------------------------------------------------------------------------------------------------vv
-targetargs:"\"C:\Users\Mr. Erbynn\source\repos\Crossroads\CrossroadsUnitTests\bin\Debug\netcoreapp3.1\CrossroadsUnitTests.dll\" -noshadow"