Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ExcludeFromCodeCoverage Isn't Working in VS2012

I have a class in my code that I don't want showing up in code coverage numbers. I added the [ExcludeFromCodeCoverage] attribute to the class definition like this:

[ExcludeFromCodeCoverage]
public class MyClass { ... }

According to the docs (http://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.excludefromcodecoverageattribute.aspx) this should be all I need, but the class still shows up in code coverage analysis.

I'm using VS2012/.NET 4.5 if that matters.

Any ideas why this wouldn't work?

like image 602
JasonBock Avatar asked Mar 12 '13 13:03

JasonBock


2 Answers

Here's what was going on, and here's how I fixed it.

I was using a .runsettings file to exclude certain assemblies from being included in code coverage. Seems like whenever you include a .runsettings file, you must include the following configuration:

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

It doesn't seem to matter what you have in the .runsettings file - this has to be there for [ExcludeFromCodeCoverage] to work.

FYI see this article for more information on the .runsettings file: http://msdn.microsoft.com/en-us/library/jj159530.aspx

like image 66
JasonBock Avatar answered Nov 10 '22 16:11

JasonBock


I know the approved answer is good but I wanted to add that if you start your .runsettings file from the one suggested here (https://msdn.microsoft.com/en-us/library/jj159530.aspx) you will have a pretty good base to start with (including the proposed solution here).

like image 2
cakeby Avatar answered Nov 10 '22 15:11

cakeby