ExcludeFromCodeCoverage не работает в VS2012

У меня есть класс в моем коде, который я не хочу показывать в номерах покрытия кода. Я добавил атрибут [ExcludeFromCodeCoverage] к определению класса следующим образом:

[ExcludeFromCodeCoverage]
public class MyClass { ... }

В соответствии с документами (http://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.excludefromcodecoverageattribute.aspx) это должно быть все, что мне нужно, но класс по-прежнему отображается в анализе покрытия кода.

Я использую VS2012/.NET 4.5, если это имеет значение.

Любые идеи, почему это не сработает?

Ответ 1

Вот что происходило, и вот как я его исправил.

Я использовал файл .runsettings, чтобы исключить включение некоторых сборок в покрытие кода. Кажется, что всякий раз, когда вы включаете файл .runsettings, должен включать следующую конфигурацию:

<Attributes>
    <Exclude>
        <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
    </Exclude>
</Attributes>

Не похоже, что у вас в файле .runsettings - это должно быть для [ExcludeFromCodeCoverage] для работы.

FYI см. эту статью для получения дополнительной информации о файле .runsettings: http://msdn.microsoft.com/en-us/library/jj159530.aspx

Ответ 2

Я знаю, что одобренный ответ хорош, но я хотел добавить, что если вы запустите свой файл .runsettings из предложенного здесь (https://msdn.microsoft.com/en-us/library/jj159530.aspx) у вас будет неплохая база для начала (включая предлагаемое решение здесь).