在 Jenkins 中使用 VSTest Runner plugin 執行 Visual Studio 測試案例,可以由「終端機輸出」頁面查看測試結果。
若是想要知道測試案例的增減或是快速查找失敗的測試案例,單純使用「終端機輸出」頁面就顯得繁瑣且不夠直覺。
在 Jenkins 中使用 MSTest plugin 顯示測試結果。
1、環境配置
1.1 VSTest Runner plugin
VSTest Runner plugin 在每次建置都會產出一份關於此次測試結果的 trx 檔案,在 Jenkins 伺服器主機上安裝並設定符合開發環境的 VSTest Runner plugin(可參考小弟文章:【Jenkins】外掛套件:VSTest Runner)。
2、Jenkins 套件管理
由 Jenkins 主畫面依序點選「管理 Jenkins」 → 「管理外掛程式」,進入「Jenkins 套件」管理頁面。
2.1 安裝 MSTest plugin
點選「可用的」頁籤,輸入過濾條件「MSTest」,選取【MSTest】並按下【下載並於重新啟動後安裝】。
套件安裝過程中會將相依套件一併載入安裝,安裝完成後顯示「下載成功。下次啟動後就會生效。」。
當套件與相依套件全部下載完成後,按下【當安裝完成且沒有工作正在執行時,重啟 Jenkins】重新啟動 Jenkins。
3、工作組態設定
由 Jenkins 主畫面依序點選「Lab.Jenkins_VisualStudio」(前面新增的工作名稱) → 「組態」,進入「工作組態」設定頁面。
3.1 建置後動作
點選「建置後動作」頁籤,按下【新增建置後動作】 → 【Publish MSTest test result report】(安裝 MSTest plugin 產生的選項),輸入「Test report TRX file」,按下【儲存】儲存工作組態設定。
- VSTest Runner plugin:每次建置都會產出一份關於此次測試結果的 trx 檔案。
- Test report TRX file:產出的 trx 路徑,路徑只可以是相對路徑(相對於工作區域)。
3.2 工作建置
按下【馬上建置】,此時此項工作會使用 Test report TRX file 找到對應的 trx 檔案並轉換為測試報告顯示於 Jenkins 工作頁面上。
由「最新測試結果」中可以快速查找失敗的測試案例,而由「測試結果趨勢」可以直觀地得知測試案例的增減。
4、測試結果增長異常修正
4.1 測試結果增長異常原因
查看 Jenkins 工作區域,每次建置時 VSTest Runner plugin 都會產出一份關於此次測試結果的 trx 檔案,而且舊有的 trx 檔案並不會刪除。
而在設定「Test report TRX file」時使用了預設值(**/*.trx),所以當此項工作使用 Test report TRX file 找到對應的 trx 檔案就會越來越多(建置1次:1個,建置2次:2個,建置N次:N個…)。
所以在每次執行工作的當下,由 VSTest Runner plugin 產出的 trx 檔案總數就會增加一份,而由 MSTest plugin 找到的 trx 檔案總數也隨之增加。於是就會造成「明明沒有增加測試案例,但是每次工作建置後的測試結果卻不斷增加」的異常情況。
4.2 LatestTrxDuplicate
知道問題後,馬上想到的有兩種解決方法。
第一種想法是讓 trx 檔案維持只有一份的狀態:在每次建置時先將工作區域下的 trx 檔案刪除,就可以避免找到的 trx 檔案總數不斷增加。
第二種想法是使用特定的 trx 檔名:在每次建置時複製並重新命名最新的 trx 檔,讓 MSTest plugin 只能取得特定檔名的 trx 檔案。
使用第二種想法(保留所有測試結果檔案),參考志弘哥當初的設定重寫了一隻 Console 程式:【Jenkins】LatestTrxDuplicate。
相關參數設定如下:
- -Workspace:Jenkins 工作區域。
- -TestResultsFolder:測試資料夾名稱。
- -OutputFileName:產出檔案名稱。
這隻 Console 程式會在 Jenkins 工作區域下的測試資料夾內取得最新的 trx 檔,複製並重新命名為產出檔案名稱,並將產出檔案放置於 Jenkins 工作區域下的測試資料夾內。
4.3 工作組態設定
由 Jenkins 主畫面依序點選「Lab.Jenkins_VisualStudio」(前面新增的工作名稱) → 「組態」,進入「工作組態」設定頁面。
點選「建置」頁籤,按下【新增建置步驟】 → 【執行 Windows 批次指令】,輸入「LatestTrxDuplicate」執行檔位置與相關參數。
點選「建置後動作」頁籤,在【Publish MSTest test result report】中調整「Test report TRX file」為「LatestTrxDuplicate」產出檔案路徑。
按下【儲存】儲存工作組態設定。
4.4 工作建置
按下【馬上建置】,此時此項工作會依序完成下列動作。
- 由 VSTest Runner plugin 產出一份關於此次測試結果的 trx 檔案。
- 使用 LatestTrxDuplicate 在 Jenkins 工作區域下的測試資料夾內取得最新的 trx 檔,複製並重新命名為產出檔案名稱,並將產出檔案放置於 Jenkins 工作區域下的測試資料夾內。
- 由 MSTest plugin 使用 Test report TRX file 找到對應的 trx 檔案並轉換為測試報告顯示於 Jenkins 工作頁面上。
由「測試結果趨勢」中可以看出測試結果數目恢復正常,連續且重複按下建置後測試結果總數也沒有異常增長。
- Jenkins Plugins:MSTest
- MSDN:VSTest.Console.exe command-line options
- 軟體主廚的程式料理廚房:[料理佳餚] 使用 Jenkins 執行自動化單元測試
- :【Jenkins】LatestTrxDuplicate
嘗試將自己的理解寫成文字紀錄,資料來源均來自於網路。
如有理解錯誤、引用錯誤或侵權,請多加指正與告知,讓我有更多的進步與改進的空間,謝謝!