SonarCloud中没有C#异常代码覆盖

问题描述

我们将SonarCloud用于C#.NET Core应用程序上的Azure DevOps中的代码分析。

经常发生的问题是,抛出异常的行显示为未发现,如下所示

SonarCloud code coverage

文件的总代码覆盖率显示为36.8%,所有引发的异常都突出显示为未发现。

但是,正在使用xUnit在测试文件中明确测试这些异常:

[Fact]
public void It_should_not_allow_empty_importance_value()
{
    try
    {
        _validator.ValidateImportance("",0);
    }
    catch (FileFormatException ex)
    {
        Assert.Equal("Missing importance value in row 1",ex.Message);
    }            
}

还使用了“ Assert.Throws”断言:

[Fact]
public void It_should_not_allow_empty_importance_value()
{
    Assert.Throws<FileFormatException>(() => _validator.ValidateImportance("",0));           
}

检查由构建管道生成的.coverage文件,发现该文件被100%覆盖:

Coverage report

“准备分析配置”任务的配置如下,从分析中排除某些文件

# Additional properties that will be passed to the scanner,# Put one key=value per line,example:
sonar.exclusions=**/*.bin,**/WebApi/Migrations/*,**Tests.Unit/*,**Tests.Integration/*,**/WebApi/Extensions/EfCoreExtensions.cs
sonar.cs.vstest.reportsPaths=$(Agent.TempDirectory)/TestResults/*.trx

在本地运行测试将返回给定文件的100%覆盖率。

C#代码覆盖异常是否存在问题?这是整个项目中的一个问题,抛出的异常显示为未涵盖。

请让我知道是否需要其他信息。任何建议表示赞赏。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)