系列目錄 <https://www.cnblogs.com/tylerzhou/p/11204826.html>
通過前面章節(jié)我們可以看到,不論怎么構(gòu)建,單元測試覆蓋率一欄總是0%
這是因?yàn)閱卧獪y試覆蓋率報(bào)告需要額外集成.這一節(jié)我們就講解如何在sonarqube里集成單元測試覆蓋率報(bào)告.
這里需要借助Opencover來生成單元測試覆蓋報(bào)告文檔,Opencover前面章節(jié)我們介紹過,不了解的朋友可以查看一下前面相關(guān)部分的章節(jié).
我在本地有一個包含單元測試項(xiàng)目(大家可以自己建一個包含單元測試的項(xiàng)目,關(guān)于單元測試前面章節(jié)也有詳細(xì)講解,這里不再贅述).進(jìn)入包含項(xiàng)目sln或者csproj的文件,執(zhí)行以下命令.
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選項(xiàng),/d為dynamic properties 動態(tài)屬性.通過動態(tài)屬性指定單元測試報(bào)告的位置.
%CD%即為當(dāng)前目錄
第二段 msbuild.exe執(zhí)行構(gòu)建.
第三段 這里是生成單元測試覆蓋率報(bào)告的關(guān)鍵. 首先指定Opencover所在位置,-register user
為注冊當(dāng)前windows用戶以使其有權(quán)限執(zhí)行.-output 指定覆蓋率文件輸出位置,這里必須和上面的
sonar.cs.opencover.reportsPaths保持一致. -target為要指定的單元測試runner,這里使用的是visual
studio自帶的vstest.console.exe targetargs指定要進(jìn)行單元測試的目標(biāo)dll.
執(zhí)行完成以后,我們再打開sonarqube web管理界面就會看到剛剛生成的mytest項(xiàng)目
通過上圖我們可以看到mytest項(xiàng)目的單元測試覆蓋率為56.7%
我們進(jìn)入mytest這個項(xiàng)目,然后點(diǎn)擊單元測試覆蓋率數(shù)字下面的鏈接
點(diǎn)擊后進(jìn)入以下頁面:
通過這個界面,我們可以看到每一個類的的單元測試覆蓋率和未覆蓋的行數(shù).我們點(diǎn)擊類名,便可以進(jìn)入具體的類.
這個圖中,藍(lán)杠部分為單元測試覆蓋到的代碼,紅框部分則為未覆蓋到的代碼.
代碼大視窗顯示.
對于管理員來說,可能僅僅需要大致瀏覽一下代碼,然后告知具體開發(fā)者需要修改.對于開發(fā)者來說,可能需要詳細(xì)查看代碼.以上截圖只截了主視窗,實(shí)際上左側(cè)還有固定的導(dǎo)航欄.這樣對于查看代碼可能不是很友好,詳細(xì)查看代碼的時(shí)候我們可能想在更大的視窗里查看.這時(shí)候我們可以點(diǎn)擊右上角的"四杠圖標(biāo)"
選擇open in new window便可以在新窗口中打開代碼.此時(shí)整個區(qū)域都是代碼,無關(guān)的內(nèi)容都沒了
以上代碼雖然在一個單獨(dú)的視窗里顯示,但是仍然有藍(lán)杠和紅杠標(biāo)識,有些童鞋可能感覺不是很舒服,想要看到清潔代碼,此時(shí)點(diǎn)擊四框圖標(biāo)選擇Show raw source
即可顯示原始代碼.
熱門工具 換一換