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) у вас будет неплохая база для начала (включая предлагаемое решение здесь).