.net持續集成sonarqube篇之 sonarqube集成單元測試


系列目錄

通過前面章節我們可以看到,不論怎么構建,單元測試覆蓋率一欄總是0%

avatar

這是因為單元測試覆蓋率報告需要額外集成.這一節我們就講解如何在sonarqube里集成單元測試覆蓋率報告.

這里需要借助Opencover來生成單元測試覆蓋報告文檔,Opencover前面章節我們介紹過,不了解的朋友可以查看一下前面相關部分的章節.

我在本地有一個包含單元測試項目(大家可以自己建一個包含單元測試的項目,關於單元測試前面章節也有詳細講解,這里不再贅述).進入包含項目sln或者csproj的文件,執行以下命令.

MSBuild.SonarQube.Runner.exe begin /k:"mytest" /n:"mytest" /v:"v1.0" /d:sonar.cs.opencover.reportsPaths="%CD%\testcover.xml"

msbuild.exe

"E:\personalproject\newTest2018\ConsoleApp1\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe" -output:"%CD%\testcover.xml" -register:user -target:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" -targetargs:"%CD%\bin\Debug\NunitTest.dll"

MSBuild.SonarQube.Runner.exe end

Begin 和end是固定格式,這里begin部分多了一個/d選項,/d為dynamic properties 動態屬性.通過動態屬性指定單元測試報告的位置.%CD%即為當前目錄

第二段 msbuild.exe執行構建.
第三段 這里是生成單元測試覆蓋率報告的關鍵. 首先指定Opencover所在位置,-register user 為注冊當前windows用戶以使其有權限執行.-output 指定覆蓋率文件輸出位置,這里必須和上面的 sonar.cs.opencover.reportsPaths保持一致. -target為要指定的單元測試runner,這里使用的是visual studio自帶的vstest.console.exe targetargs指定要進行單元測試的目標dll.

執行完成以后,我們再打開sonarqube web管理界面就會看到剛剛生成的mytest項目

avatar

通過上圖我們可以看到mytest項目的單元測試覆蓋率為56.7%

我們進入mytest這個項目,然后點擊單元測試覆蓋率數字下面的鏈接

avatar

點擊后進入以下頁面:

avatar

通過這個界面,我們可以看到每一個類的的單元測試覆蓋率和未覆蓋的行數.我們點擊類名,便可以進入具體的類.

avatar

這個圖中,藍杠部分為單元測試覆蓋到的代碼,紅框部分則為未覆蓋到的代碼.

代碼大視窗顯示.

對於管理員來說,可能僅僅需要大致瀏覽一下代碼,然后告知具體開發者需要修改.對於開發者來說,可能需要詳細查看代碼.以上截圖只截了主視窗,實際上左側還有固定的導航欄.這樣對於查看代碼可能不是很友好,詳細查看代碼的時候我們可能想在更大的視窗里查看.這時候我們可以點擊右上角的"四杠圖標"

avatar

選擇open in new window便可以在新窗口中打開代碼.此時整個區域都是代碼,無關的內容都沒了

avatar

以上代碼雖然在一個單獨的視窗里顯示,但是仍然有藍杠和紅杠標識,有些童鞋可能感覺不是很舒服,想要看到清潔代碼,此時點擊四框圖標選擇Show raw source即可顯示原始代碼.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM