从.net-core中的代码覆盖中排除类或方法

时间:2016-10-06 23:31:35

标签: .net-core

我知道我可以使用[ExcludeFromCodeCoverage]来排除.Net framework 4中的代码覆盖率。

有没有人知道我是否可以从.dotnet核心中排除代码覆盖率?

3 个答案:

答案 0 :(得分:2)

我终于找到了解决方案!

首先,您需要使用.runsettings文件来配置代码覆盖率:

https://msdn.microsoft.com/en-us/library/jj159530.aspx

但问题是ExcludeFromCodeCoverageAttribute是密封的,所以我们不能使用它

https://github.com/dotnet/corefx/blob/93b277c12c129347b5d05de973fe00323ac37fbc/src/System.Diagnostics.Tools/src/System/Diagnostics/CodeAnalysis/ExcludeFromCodeCoverageAttribute.cs

我在这里发布了一个问题,看起来它将在下一个版本中解决

https://github.com/dotnet/corefx/issues/14488

现在 我使用了.runsettings示例中提到的GeneratedCodeAttribute。 您还可以使用自定义属性或此处的任何其他排除规则:

https://msdn.microsoft.com/en-us/library/jj159530.aspx

答案 1 :(得分:1)

从.NET Core 2.0开始,您可以使用ExcludeFromCodeCoverage属性。

using System.Diagnostics.CodeAnalysis;

namespace YourNamespace
{
    [ExcludeFromCodeCoverage]
    public class YourClass
    {
        ...
    }
}

https://isscroberto.com/2019/07/11/net-core-exclude-from-coverage/

答案 2 :(得分:0)

创建自己的 ExcludeFromCodeCoverage 属性

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Interface)]
public class ExcludeFromCodeCoverageAttribute : Attribute
{
    public ExcludeFromCodeCoverageAttribute(string reason = null)
    {
        Reason = Reason;
    }

    public string Reason { get; set; }
}

然后将其添加到您的 .runsettings 文件中并将其排除。

...
   <Configuration>
      <CodeCoverage>
        .
        .
        .
        <Attributes>
          <Exclude>
            <Attribute>^YourCompany\.YourNameSpace\.sExcludeFromCodeCoverageAttribute$</Attribute>
          </Exclude>
        </Attributes>
        .
        .
        .
    </Configuration>
...

在分析代码覆盖率时,请不要忘记选择运行设置文件。

More on customizing run settings