(詳見 如何把 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] |
應該就可以得到成功的綠燈
不過這時候還沒有看到我們的測試結果
因為還需要設定兩個步驟
首先要讓 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] |