C#Msbuild代码覆盖率如果达不到阈值则硬停止

时间:2018-05-29 09:05:02

标签: .net c#-4.0 msbuild nunit

我们有一个包含多个项目的c#解决方案。 Project使用msbuild进行打包,运行Nunit进行单元测试。我们目前没有的是为每个项目定义代码覆盖率阈值,并在代码覆盖率低于阈值限制时使msbuild失败。这在使用maven和cobertura作为插件的java项目中是开箱即用的。  点网世界中的任何此类工具。

我们正在使用 - Visual Studio 2017专业版 - Msbuild 15.3.409.57025 - Resharper终极2017.2 - DotNet Framework 4.6.2 - Nunit 2.5.7

1 个答案:

答案 0 :(得分:0)

如果您使用的是ReSharper,则可以使用DotCover作为代码覆盖率工具。此工具可以生成一个报告,然后可以使用构建目标对其进行分析,从而使构建失败。

<Target Name="FailBuildOnLowCoverage">

    <!-- $(DotCoverResult) is the text of the report that you obtained by reading the report file -->

    <PropertyGroup>
      <CodeCoverageValue>$([System.Text.RegularExpressions.Regex]::Match($(DotCoverResult), '(?&lt;="Total",)(.*?)(?=[,])'))</CodeCoverageValue>
      <CodeCoverageValue Condition="'$(CodeCoverageValue)' == ''">0</CodeCoverageValue>
    </PropertyGroup>


<Message Condition="'$(CodeCoverageValue)' &lt; '30'" Text="Code coverage is less than 30%!

░░░░░░░░░░░█████████████
░░░░░░░░░███░███░░░░░░██
███░░░░░██░░░░██░██████████
████████░░░░░░████░░░░░░░██
████░░░░░░░░░░██░░██████████
████░░░░░░░░░░░███░░░░░░░░░██
████░░░░░░░░░░░██░░██████████
████░░░░░░░░░░░░████░░░░░░░░█
████░░░░░░░░░░░░░███░░████░░█
█████████░░░░░░░░░░████░░░░░█
███░░░░░██░░░░░░░░░░░░░█████
░░░░░░░░░███░░░░░░░██████
░░░░░░░░░░░██░░░░░░██
░░░░░░░░░░░░███░░░░░██
░░░░░░░░░░░░░░██░░░░██
░░░░░░░░░░░░░░░███░░░██
░░░░░░░░░░░░░░░░░██░░░█
░░░░░░░░░░░░░░░░░░█░░░█
░░░░░░░░░░░░░░░░░░██░██
░░░░░░░░░░░░░░░░░░░███
" />