如何使用相对路径为 OpenCover for MSTest 编写批处理文件,使其独立于机器?



我使用以下格式从cmd运行MSTest的OpenCover代码覆盖率:

C:> YourOpenCoverPathOpenCover.Console.exe -target:"YourPathHereMSTest.exe" -targetargs:"/testcontainer:YourDLLPathbinDebugTestProject.dll" -output:YourOutputFile.xml -register:user

和以下命令运行报告生成器以从OpenCover生成的xml文件生成报告:

C:ReportGeneratorbinReportGenerator.exe -reports:"C:ReportsMSTestprojectCoverageReport.xml" -targetdir:"C:ReportsCodeCoverage"

它工作正常,但是OpenCover.exe,MSTest.exe,ReportGenerartor.exe等的路径将始终取决于机器,我们如何使它们相对,以便可以创建一个通用批处理文件以从任何机器运行这些命令?

您可以使用"forfiles"命令递归地搜索目录中这些特定文件的路径。以下示例将搜索您输入的任意数量的驱动器号:

for %%i in (c:, d:, e:, ......) do if exist %%i (
for /f "tokens=*" %%a in ('forfiles /p %%i /m OpenCover.Console.exe /s /c "cmd /c echo @path"') do set openCover=%%a
for /f "tokens=*" %%b in ('forfiles /p %%i /m MSTest.exe /s /c "cmd /c echo @path"') do set msTest=%%b
)

从这里,您可以将变量调用为:

%openCover% -target:%msTest% ...etc

最新更新