美文网首页
命令行方式获取代码覆盖率数据

命令行方式获取代码覆盖率数据

作者: Johnny_ | 来源:发表于2018-04-29 08:22 被阅读0次

  命令行方式获取代码覆盖率数据,这看起来似乎是非常简单的事情,无非就是执行一个命令然后输出一些东西,确实,命令行方式获取代码覆盖率数据的套路跟我们常规的套路是一致的。但是,当我们去MSDN或者Google .NET Code Coverage Commandline Tool 时,却得不到我们想要的结果。神奇的是,微软官网也没有关于命令行获取覆盖率数据的解释。没办法,这就只能自己摸索摸索了。

  仔细想一想,我们平时命令行还原nuget包或者生成解决方案用的命令是这样的:

nuget.exe restore xxx.sln
msbuild(dotnet build) xxx.sln

VS2012后我们用命令行跑单元测试是这样的:

vstest.console.exe xxx.dll

我们在VS安装目录下的找到了CodeCoverage.exe(%vsroot%\Team Tools\Dynamic Code Coverage Tools),查看它的帮助文档,如下面这张图:

image05.png

我们会发现,里面主要有 collectanalyze 操作,但是显然不能直接对一个sln执行收集和分析,对一个Tests.dll执行收集也不合理,毕竟覆盖率是业务代码的覆盖率,Tests.dll中并不会附带覆盖率信息。经过一些尝试,它的流程大致是这样子:

  1. 执行collect收集覆概率信息到二进制文件

     CodeCoverage.exe collect /output:<二进制文件输出路径> vstest.console.exe <Tests.dll路径>
    
  2. 分析二进制数据,输出到人类友好的xml

     CodeCoverage.exe analyze /output:<xml输出目录> <二进制文件目录>
    

在xml中有非常详细的覆盖率数据,包括行覆盖率、块覆盖率、具体的哪行哪列被覆盖等。
在xml中有非常详细的覆盖率数据,包括行覆盖率、块覆盖率、具体的哪行哪列被覆盖等。

针对使用了Fakes的测试项目,使用 CodeCoverage.exe collect 命令时会报错,可以使用如下命令代替

    vstest.console.exe <Tests.dll路径> /ResultsDirectory:<测试结果目录> /EnableCodeCoverage

相关文章

网友评论

      本文标题:命令行方式获取代码覆盖率数据

      本文链接:https://www.haomeiwen.com/subject/vbkolftx.html