Могу ли я исключить часть метода из покрытия кода?C#

Место общения программистов C#
Ответить
Anonymous
 Могу ли я исключить часть метода из покрытия кода?

Сообщение Anonymous »

Подозреваю, что ответ отрицательный, но все равно спрошу...

TL;DR

Я знаю, что могу исключить класс или метод из анализа покрытия с помощью атрибута [ExcludeFromCodeCoverage], но есть ли способ исключить только часть метода?

Конкретный пример

У меня есть метод, который лениво генерирует последовательность элементов int.MaxValue:

Код: Выделить всё

private static IEnumerable GenerateIterator(Func generator)
{
for (int i = 0; i < int.MaxValue; i++)
{
yield return generator(i);
}
}
На практике он никогда не перечисляется полностью, поэтому конец метода никогда не достигается. По этой причине DotCover считает, что 20% метода не покрыты, и выделяет закрывающую скобку как непокрытую (что соответствует возврату false в сгенерированном методе MoveNext).
Я мог бы написать тест, который обрабатывает всю последовательность, но его выполнение занимает очень много времени, особенно с включенным покрытием.

Поэтому я хотел бы найти способ сообщить DotCover, что самую последнюю инструкцию не нужно описывать.

Примечание: я знаю, что на самом деле это не так. необходимо, чтобы весь код был охвачен модульными тестами; некоторые фрагменты кода не могут или не нуждаются в тестировании, и я обычно исключаю те, у которых есть атрибут [ExcludeFromCodeCoverage]. Но мне нравится иметь 100%-ное покрытие кода, который я тестирую, потому что так легче обнаружить непроверенные части кода. Иметь метод с 80%-ным покрытием, когда вы знаете, что в нем больше нечего тестировать, очень раздражает...

Подробнее здесь: https://stackoverflow.com/questions/241 ... e-coverage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»