ExcludeFromCodeCoverage не работает для метода CloseAsync - PullRequest
0 голосов
/ 28 июня 2018

Я знаю, что этот вопрос задавался и раньше, но я не мог найти решение этой проблемы.

У меня есть процессор-концентратор событий Microsoft Azure, ProcessorHost, который реализует интерфейс IEventProcessor.

У него есть методы IEventProcessor.OpenAsync, IEventProcessor.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 голосов
/ 05 июля 2018

Проверьте, помогает ли удаление async / await .

[ExcludeFromCodeCoverage]
Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason)  
    if (reason == CloseReason.Shutdown) {
        return context.CheckpointAsync();
    }
    return Task.CompletedTask;
}

Это единственное заметное различие между реализациями двух методов

0 голосов
/ 28 июня 2018

В SonarC # может быть ошибка, связанная с этим атрибутом. Пожалуйста, проверьте это: https://github.com/SonarSource/sonar-csharp/issues/1421

Попробуйте выполнить обновление до последней версии SonarQube.

...