2017-01-18 10 views
1

Я использую торт в своих проектах для создания, запуска модульных тестов, проверки покрытия кода, а затем создания отчета HTML (используя ReportGenerator). Все это работает правильно, и я могу открыть сгенерированный отчет в своем браузере.Как запустить html-отчет из торта (build)

Однако, когда я ранее использовал пакетный файл dos для этого, он также запустил бы мой браузер по умолчанию и загрузил отчет после его создания, но я не могу найти способ сделать это с помощью тортов.

Вот содержимое пакетного файла я использую:

@ECHO OFF 

SET SearchDirectory=%~dp0Grapevine.Tests\bin\Debug 
SET DllContainingTests=%~dp0Grapevine.Tests\bin\Debug\Grapevine.Tests.dll 

for /R "%~dp0packages" %%a in (*) do if /I "%%~nxa"=="xunit.console.exe" SET TestRunnerExe=%%~dpnxa 
for /R "%~dp0packages" %%a in (*) do if /I "%%~nxa"=="OpenCover.Console.exe" SET OpenCoverExe=%%~dpnxa 
for /R "%~dp0packages" %%a in (*) do if /I "%%~nxa"=="ReportGenerator.exe" SET ReportGeneratorExe=%%~dpnxa 

if not exist "%~dp0GeneratedReports" mkdir "%~dp0GeneratedReports" 
call :RunOpenCoverUnitTestMetrics 

if %errorlevel% equ 0 (
call :RunReportGeneratorOutput 
) 

if %errorlevel% equ 0 (
call :RunLaunchReport 
) 
exit /b %errorlevel% 

:RunOpenCoverUnitTestMetrics 
"%OpenCoverExe%"^
-target:"%TestRunnerExe%"^
-targetargs:"\"%DllContainingTests%\""^
-filter:"+[*]* -[*.Tests*]* -[*]*.*Config -[xunit*]* -[*]Grapevine.Interfaces.*"^
-mergebyhash^
-skipautoprops^
-register:user^
-output:"%~dp0GeneratedReports\CoverageReport.xml"^ 
-searchdirs:"%SearchDirectory%" 
exit /b %errorlevel% 

:RunReportGeneratorOutput 
"%ReportGeneratorExe%"^
-reports:"%~dp0\GeneratedReports\CoverageReport.xml"^
-targetdir:"%~dp0\GeneratedReports\ReportGeneratorOutput" 
exit /b %errorlevel% 

:RunLaunchReport 
start "report" "%~dp0\GeneratedReports\ReportGeneratorOutput\index.htm" 
exit /b %errorlevel% 

Я попытался с помощью следующих действий:

StartProcess(new FilePath("./GeneratedReports/ReportGeneratorOutput/index.htm")); 

К которому я получаю следующее сообщение об ошибке:

An error occured when executing task 'generate-report'. 
Error: The specified executable is not a valid application for this OS platform. 

У меня есть ве что путь правильный, и файл существует, и что копирование/вставка пути к файлу в командной строке действительно открывает файл в моем браузере по умолчанию.

ответ

1

Вы можете сделать это, используя пример StartProcess псевдоним:

FilePath reportpath = File("./GeneratedReports/ReportGeneratorOutput/index.htm"); 
StartProcess(reportpath); 
+0

Это не сработало. См. Мое редактирование выше. –

0

Что, наконец, работал для меня это:

if (IsRunningOnWindows()) 
{ 
    StartProcess("explorer.exe", reportPath); 
} 

Очевидно, что это не будет работать на не-Windows средах, но это выходит за рамки моих потребностей. Все, что я попробовал, вызвало ошибку либо в том, что файл не может быть найден, либо в том, что исполняемый файл был недействителен для ОС.