VSTS Build - Test Assemblies如何使用NUnit進行測試?
在 VSTS 的 Build(CI) 建立 build definition 時,通常會選擇範本來調整修改,例如,選擇 Visual Studio 範本:
在不修改範本步驟與內容的情況下,我們直接進行 Build 動作,我們可以看到所有動作都亮起綠燈:
看到綠燈,心情就非常好。但我發現一個可怕的事實...
Build step logs
這是一個含測試的專案(使用 NUnit),想要看一下測試結果:
什麼都看不到?VSTS 不論是 Build 還是 Release 都有非常詳細的 Logs,不看還好,一看:
假的!假的!測試根本沒有執行呀。(哭哭)
(1)Path to Custom Test Adapters
在 xUnit or NUnit with Visual Studio Online Build 找到第一關鍵因素「$(Build.SourcesDirectory)\packages
」,測試一段時間後,依專案架構我修改成「$(Build.SourcesDirectory)\{solution_name}\packages
。這是指定測試套件的路徑,也是就 NuGet 還原套件儲存的位置。
(2)Test Adapter Path
重新 Build 一樣沒有執行測試,但其中訊息引起我的注意:
Warning: The path 'C:\a\1\s\***\packages' specified in the 'TestAdapterPath' does not contain any test adapters, provide a valid path and try again.
2016-07-18T09:27:49.9335531Z Warning: No test is available in C:\a\1\s\***\***.Tests\bin\Release\***.Tests.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.
Visual Studio 要能正確執行 NUnit 測試需要額外安裝 NUnit 3 Test Adapter,難到 VSTS 也要裝外掛?找了 VSTS Marketplace 也找不到什麼相關的內容。
後來,花了不少時間終於找到原因,原來 Test Adapter 有 NuGet 版。必須在測試專案裡把 NUnit3TestAdapter 給安裝進來。
發現此原因後才發現,人家 xUnit or NUnit with Visual Studio Online Build 文章裡已經交代的很清楚:2. Install the matching Visual Studio test adapter/runner NuGet package.
,只怪自己走馬看花才浪費了很多時間。
除了看 Tests 的結果,還能把 Code coverage 給下載回來用 Visual Studio 開啟涵蓋率等報告。
小結
一開始的綠燈是"假的",原因是我改用 NUnit,後來的紅燈是"暫時的",雖然花費了不少時間,最後可以看到測試報告與涵蓋率才確認,那是"真的"。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。