前面幾篇介紹使用 SpecFlow 和 Pickles 指令碼產生 cucumber/gherkin 的測試報表,請參考:
https://dotblogs.com.tw/yc421206/2016/04/25/specflow_pickles_live_document
https://dotblogs.com.tw/yc421206/2016/04/26/specflow_pickles_live_document_command_line
今天,我要搭配 TFS 2015 Build vNext 自動產生測試報表,以下是我的演練。
PS.雖然說,手動產生測試報表已經完成了,但還是花了很多的時間調整指令碼路徑的處理。
伺服器環境:
- Windows 2012 Datacenter x64
- TFS 2015 Update 2 中文版
開發環境:
- VS 2015 Update 2
- Pickles.CommandLine 2.3.0
- SpecFlow 2.0
在測試專案裡面加入 runSpecFlowReport.bat 如下圖:
runSpecFlowReport.bat 的內容如下:
echo off
set currentFolder=%1
set projectName=%2
set testResultFolder=%3
set outputFolder=%testResultFolder%\%projectName%
echo currentFolder = %currentFolder%
echo projectName = %projectName%
echo testResultFolder= %testResultFolder%
echo outputFolder= %outputFolder%
if exist "%outputFolder%" (rmdir "%outputFolder%" /s /q )
mkdir "%outputFolder%"
set testResultFile="%outputFolder%\%projectName%.trx"
REM 搜尋*trx的檔案
REM for /r "%testResultFolder%" %%f in (*.trx) do (
REM set testResultFile="%%~f"
REM )
echo testResultFile = %testResultFile%
set projectFile="%currentFolder%\%projectName%\%projectName%.csproj"
set projectDll="%currentFolder%\%projectName%\bin\Release\%projectName%.dll"
set featureFolder="%currentFolder%\%projectName%"
set msTestFile="%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\IDE\MsTest.exe"
set specFlowFile="%currentFolder%\packages\SpecFlow.2.0.0\tools\SpecFlow.exe"
set picklesFile="%currentFolder%\packages\Pickles.CommandLine.2.6.0\tools\pickles.exe"
set mstestArguments=/testcontainer:%projectDll% /resultsfile:%testResultFile%
echo projectFile = %projectFile%
echo projectDll = %projectDll%
echo featureFolder = %featureFolder%
echo specFlowFile = %specFlowFile%
echo picklesFile = %picklesFile%
echo mstestArguments = %mstestArguments%
pause
echo 因為 SpecFlow不支援vstest.console.exe 產生出來的trx格式,為了報表再跑一次測試,Generate TestResult.trx....
%msTestFile% %mstestArguments%
echo Generate Pickles Report....
%picklesFile% --feature-directory=%featureFolder% --output-directory="%outputFolder%" --documentation-format="dhtml" --test-results-format=mstest --link-results-file=%testResultFile%
echo Generate SpecFlow Report....
%specFlowFile% mstestexecutionreport %projectFile% /testResult:%testResultFile% /out:"%outputFolder%\SpecFlowReport.html"
%specFlowFile% stepdefinitionreport %projectFile% /out:"%outputFolder%\SpecFlowStepReport.html"
下圖是TFS Build vNext 建置的目錄:
Pickles 有支援vstest,如下圖:
若你只需要跑 Pickles 的測試報表,你可以用 vstest.console.exe 產生出來的 *.trx,把這幾行註解打開,如下圖:
接下來,在 TFS 組建 增加一個「命令列」,然後調用 runSpecFlowReport.bat,並傳入相關參數,如下圖:
上圖的參數是來自於下圖的設定:
運行建置後,應該要在下圖得到三個 *.html,不過我只有得到兩個,SpecFlow StepDefine 跑不出來,一直跟我說找不到相依元件,對這個錯誤訊息沒有頭緒,先跳過。:)
發行測試結果:
我們可以選擇把測試結果發到成品,如下圖:
test 成品,如下圖:
如果,你覺得發行到網站可以即時看測試報表比較酷,只要把 html 複製到網站就可以了,如下圖:
最後,排定 Daily Build,自動化建置、測試、文件、部署,輕鬆完成。
若你對 Build vNext 還不熟,你可以參考以下連結:
https://dotblogs.com.tw/yc421206/2016/04/27/tfs2015_build_vnext_release_deploy_internal_nuget_server
https://dotblogs.com.tw/yc421206/2016/04/22/tfs2015_build_vnext_release_deploy_internal_webapp
https://dotblogs.com.tw/yc421206/2016/04/20/tfs2015_build_vnext_webdeploy
對 Pickles 不熟,可以參考以下連結:
https://dotblogs.com.tw/yc421206/2016/04/25/specflow_pickles_live_document
https://dotblogs.com.tw/yc421206/2016/04/26/specflow_pickles_live_document_command_line
整個過程很簡單,但是花了我好多的時間,踩過的雷,記住它下次就避掉,不熟的東西多練幾次就會了。 :)
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET