ExcludeFromCodeCoverage对CloseAsync方法不起作用

时间:2018-06-28 04:35:59

标签: c# sonarqube code-coverage mstest azure-eventhub

我也知道也曾问过这个问题,但是我找不到任何解决方案。

我有一个Microsoft Azure事件中心处理器ProcessorHost,它正在实现IEventProcessor接口。

该类中有方法IEventProcessor.OpenAsyncIEventProcessor.CloseAsync和其他自定义方法。对于那些自定义方法,我已经使用MSTest编写了测试用例,并且它们已经通过。

现在我已经用OpenAsync装饰了CloseAsync[ExcludeFromCodeCoverage]方法,如下所述。

[ExcludeFromCodeCoverage]
async Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason)
{

}

[ExcludeFromCodeCoverage]
Task IEventProcessor.OpenAsync(PartitionContext context)
{

}

我正在使用Sonar-cube来测试代码覆盖率。当我运行报告以查看代码覆盖率时,它表明OpenAsync方法已被覆盖,但即使用CloseAsync装饰后,[ExcludeFromCodeCoverage]方法也未被覆盖。

所以我想知道CloseAsync方法还有什么要做的事情,以将其排除在代码范围之外。

编辑: closeAsync的完整方法

async Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason)
{                
    if (reason == CloseReason.Shutdown)
    {
        await context.CheckpointAsync();
    }
}

2 个答案:

答案 0 :(得分:1)

查看是否删除 async / await 帮助。

var listObject  = Helper.GetQuerable("System.Int32");

这是两种方法的实现之间唯一明显的区别

答案 1 :(得分:0)

SonarC#中可能存在与此属性有关的错误。请检查以下内容:https://github.com/SonarSource/sonar-csharp/issues/1421

尝试更新到SonarQube的最新版本。