.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便可显示原始代码.