.net持续集成sonarqube篇之 sonarqube集成单元测试

释放双眼,带上耳机,听听看~!

系列目录

通过前面章节我们可以看到,不论怎么构建,单元测试覆盖率一栏总是0%

.net持续集成sonarqube篇之 sonarqube集成单元测试

这是因为单元测试覆盖率报告需要额外集成.这一节我们就讲解如何在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项目

.net持续集成sonarqube篇之 sonarqube集成单元测试

通过上图我们可以看到mytest项目的单元测试覆盖率为56.7%

我们进入mytest这个项目,然后点击单元测试覆盖率数字下面的链接

.net持续集成sonarqube篇之 sonarqube集成单元测试

点击后进入以下页面:

.net持续集成sonarqube篇之 sonarqube集成单元测试

通过这个界面,我们可以看到每一个类的的单元测试覆盖率和未覆盖的行数.我们点击类名,便可以进入具体的类.

.net持续集成sonarqube篇之 sonarqube集成单元测试

这个图中,蓝杠部分为单元测试覆盖到的代码,红框部分则为未覆盖到的代码.

代码大视窗显示.

对于管理员来说,可能仅仅需要大致浏览一下代码,然后告知具体开发者需要修改.对于开发者来说,可能需要详细查看代码.以上截图只截了主视窗,实际上左侧还有固定的导航栏.这样对于查看代码可能不是很友好,详细查看代码的时候我们可能想在更大的视窗里查看.这时候我们可以点击右上角的\”四杠图标\”

.net持续集成sonarqube篇之 sonarqube集成单元测试

选择open in new window便可以在新窗口中打开代码.此时整个区域都是代码,无关的内容都没了

.net持续集成sonarqube篇之 sonarqube集成单元测试

以上代码虽然在一个单独的视窗里显示,但是仍然有蓝杠和红杠标识,有些童鞋可能感觉不是很舒服,想要看到清洁代码,此时点击四框图标选择Show raw source即可显示原始代码.

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

Flink实战(八) - Streaming Connectors 编程

2020-11-9 6:06:05

随笔日记

Redis(五)--- Redis的持久化RDB与AOF

2020-11-9 6:06:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索