2018/02/13

如何在 AppVeyor 執行用 Google Test 寫的測試程式

不久前有介紹怎麼使用 AppVeyor 整合 GitHub
(詳見 如何把 GitHub 上的 repository 掛上 AppVeyor 一文)
假設你使用 Visual Studio 2017 內建的 Google Test 來撰寫測試程式
要怎麼讓 AppVeyor 幫你 build 好後順便執行測試
並把測試結果回報給你呢?

首先當然是要先到方案中加一個 Google Test Project

新增一個 Google Test Project

Visual Studio 2017 已經把加測試這段作的很方便
你可以選擇這個測試是為了測試哪個模組
接著 Wizard 就會幫你把參考設定好
你只要著手開始寫測試就好

設定要測試的目標專案

因為等下要在 AppVeyor 上看結果
所以我先故意寫了一個成功跟一個失敗的測試
方便對照 UI 上的效果

一個成功一個失敗的測試案例

接著就把這些新增全部 push 到 GitHub 上看看 AppVeyor 的執行結果
這時候會發現有錯誤
似乎跟 NuGet package 有關係

缺少某個不存在的 NuGet package [截圖自 www.appveyor.com]

幸好 AppVeyor 有提供這個問題的解答 [參考: About NuGet package restore]
我們就照著在 Before Build Script 中輸入 "nuget restore"

設定 nuget restore [截圖自 www.appveyor.com]

按下 Save 後再回到主頁按下 [RE-BUILD COMMIT]
應該就可以得到成功的綠燈
不過這時候還沒有看到我們的測試結果
因為還需要設定兩個步驟
首先要讓 AppVeyor build 完後
會自動執行我們的測試程式
所以先切換到 Settings 頁面
在側邊攔找到 Build 頁籤
設定好 Configuration 為 Debug
以及 Platforma 為 x86

設定 Configuration 與 Platform [截圖自 www.appveyor.com]

再到 Tests 頁籤設定 Test script 為 "%APPVEYOR_BUILD_FOLDER%\%CONFIGURATION%\MyProjectTest.exe --gtest_output=xml:tests.xml"

設定 Test script [截圖自 www.appveyor.com]

再執行一次 Rebuild
應該可以看到測試程式成功執行的畫面

成功執行測試程式 [截圖自 www.appveyor.com]

不過右上角的 Tests 並沒有把兩個 test cases 列出來
這是因為結果的 tests.xml 還要透過 AppVeyor 的 API 傳上去
它才可以幫忙剖析出報告
我們再次進入 Settings 中的 General 頁籤
往下滑到最後的 On build finish script 中
輸入 "(new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\tests.xml))"
儲存後再重新 Rebuild
這樣我們就可以在 Tests 畫面看到報告了

設定 On build finish sciprt 上傳測試報告 [截圖自 www.appveyor.com]

最後的測試報告 [截圖自 www.appveyor.com]

沒有留言:

張貼留言