Используйте атрибут для исключения кода от анализа покрытия в Visual Studio

Я думаю, что в значительной степени невозможно сделать это автоматически. Помните, что O (g (n)) является верхней границей худшего случая, и много функций работают лучше, чем это для большого количества наборов данных. Необходимо было бы найти набор данных худшего случая для каждого для сравнения их. Это - трудная задача самостоятельно для многих алгоритмов.

18
задан tvanfosson 17 August 2009 в 17:54
поделиться

3 ответа

Начиная с VS2010 у нас есть ExcludeFromCodeCoverageAttribute . Комментаторы отметили, что это работает как в NCover, так и в DotCover + NUnit. Пример использования:

[ExcludeFromCodeCoverage]
public class myUntestableClass
{ }

См. Также эту ссылку . Они предлагают использовать VSInstr в качестве инструмента командной строки, у него есть параметры / EXCLUDE (это не так удобно).

27
ответ дан 30 November 2019 в 07:13
поделиться

Я нашел некоторую информацию о паре диагностических атрибутов DebuggerNonUserCodeAttribute и DebuggerHiddenAttribute , которые указывают, что использование этих атрибутов приведет к заставит анализатор покрытия в VS исключить их из результатов. Я пробовал использовать атрибут DebuggerNonUserCodeAttribute, и, похоже, он работает. Я, вероятно, смогу смириться с этим для большинства классов, о которых я думаю, хотя мне не нравится побочный эффект невозможности войти в эти классы. Это не должно быть проблемой для классов-оболочек, но может оказаться так и с классами, которые по своей сути трудно тестировать, и мне нужен доступ отладчика.

Я все еще ищу альтернативы.

7
ответ дан 30 November 2019 в 07:13
поделиться

С NCover вы можете создать атрибут, а затем указать NCover игнорировать этот атрибут.

В наших проектах мы определили этот атрибут (без пространства имен, поэтому его легко использовать):

public class CoverageExcludeAttribute : Attribute { }

Мы используем NAnt, поэтому у нас есть цель, которая выглядит следующим образом:

<target name="unittests" description="run nunit tests" >        
    <ncover
        ....
        excludeAttributes="CoverageExcludeAttribute"
    />
</target>

Вопрос 9 в FAQ NCover описывает этот метод. Мы основали наше решение на этом.

В качестве альтернативы вы можете использовать функцию исключения NCoverExplorer, чтобы исключить пространства имен и сборки из окончательного отчета. Это просто удаляет данные из отчета, но конечный результат остается тем же.

Мы используем оба метода.

5
ответ дан 30 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: