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

系列目錄html

經過前面章節咱們能夠看到,不論怎麼構建,單元測試覆蓋率一欄老是0%web

avatar

這是由於單元測試覆蓋率報告須要額外集成.這一節咱們就講解如何在sonarqube裏集成單元測試覆蓋率報告.windows

這裏須要藉助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%即爲當前目錄ui

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

執行完成之後,咱們再打開sonarqube web管理界面就會看到剛剛生成的mytest項目code

avatar

經過上圖咱們能夠看到mytest項目的單元測試覆蓋率爲56.7%xml

咱們進入mytest這個項目,而後點擊單元測試覆蓋率數字下面的連接htm

avatar

點擊後進入如下頁面:

avatar

經過這個界面,咱們能夠看到每個類的的單元測試覆蓋率和未覆蓋的行數.咱們點擊類名,即可以進入具體的類.

avatar

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

代碼大視窗顯示.

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

avatar

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

avatar

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