• .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%	estcover.xml"
    
    msbuild.exe
    
    "E:personalproject
    ewTest2018ConsoleApp1packagesOpenCover.4.6.519	oolsOpenCover.Console.exe" -output:"%CD%	estcover.xml" -register:user -target:"C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDECommonExtensionsMicrosoftTestWindowvstest.console.exe" -targetargs:"%CD%inDebugNunitTest.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即可显示原始代码.

  • 相关阅读:
    [原创]Windows 7 下成功添加网络共享HP打印机
    [原创]PDFCreator自动保存及文件名带空格、后缀名丢失的解决方法(Windows 7通过)
    [原创]U872客户端“system.net.sockets.socketexception”的解决方法
    [转载]Windows 7默认共享无法访问
    [转载]使Excel不显示0值的三招
    [原创]使用空密码远程桌面连接
    分布式架构理论
    ffmpeg重要函数和结构体整理
    es~存储部分字段
    es~text与keyword的选择
  • 原文地址:https://www.cnblogs.com/tylerzhou/p/11253855.html
Copyright © 2020-2023  润新知