Как написать пакетный файл для OpenCover для MSTest с относительными путями, чтобы он стал машинно-независимым? - PullRequest
0 голосов
/ 15 января 2020

Я использую приведенный ниже формат для запуска покрытия кода OpenCover для MSTest из cmd:

C:\> \Your\OpenCover\Path\OpenCover.Console.exe -target:"\Your\Path\Here\MSTest.exe" -targetargs:"/testcontainer:\Your\DLL\Path\bin\Debug\TestProject.dll" -output:\Your\Output\File.xml -register:user

и ниже для запуска генератора отчетов для генерации отчета из файла, созданного OpenCover xml:

C:\ReportGenerator\bin\ReportGenerator.exe -reports:"C:\Reports\MSTest\projectCoverageReport.xml" -targetdir:"C:\Reports\CodeCoverage"

И он работает нормально, но пути для OpenCover.exe, MSTest.exe, ReportGenerartor.exe и т. Д. c. всегда будет зависеть от машины, как мы можем сделать их относительными, чтобы можно было создать универсальный c командный файл для запуска этих команд с любой машины?

1 Ответ

0 голосов
/ 15 января 2020

Вы можете использовать команду «forfiles» для рекурсивного поиска в каталогах путей к указанным c файлам. Приведенный ниже пример будет искать столько букв дисков, сколько вы введете:

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
...