2013-03-12 3 views
10

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

[ExcludeFromCodeCoverage] 
public class MyClass { ... } 

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

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

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

ответ

27

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

Я использовал файл .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

+0

Ну, это должна быть идея Microsoft о интуитивной конфигурации ... – Gorgsenegger

1

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

Смежные вопросы