2013-03-12 12 views
10

Ho una classe nel mio codice che non voglio mostrare nei numeri di copertura del codice. Ho aggiunto l'attributo [ExcludeFromCodeCoverage] alla definizione di classe in questo modo:ExcludeFromCodeCoverage non funziona in VS2012

[ExcludeFromCodeCoverage] 
public class MyClass { ... } 

Secondo la documentazione (http://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.excludefromcodecoverageattribute.aspx) questo dovrebbe essere tutto quello che serve, ma la classe mostra ancora in analisi di copertura del codice.

Sto usando VS2012/.NET 4.5 se questo è importante.

Qualche idea sul perché questo non funzionerebbe?

risposta

27

Ecco cosa stava succedendo, ed ecco come l'ho risolto.

Stavo usando un file .runsettings per escludere alcuni assembly da includere nella copertura del codice. Sembra che ogni volta che si include un file .runsettings, è necessario includere la seguente configurazione:

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

Non sembra avere importanza quello che hai nel file .runsettings - questo deve essere lì per [ExcludeFromCodeCoverage] a lavoro.

FYI si veda questo articolo per ulteriori informazioni sul file .runsettings: http://msdn.microsoft.com/en-us/library/jj159530.aspx

+0

Bene, questa deve essere l'idea di Microsoft della configurazione intuitiva ... – Gorgsenegger