在Visual Studio 2010中关闭Lambda表达式以获取代码覆盖率

时间:2011-10-24 17:32:39

标签: c# visual-studio visual-studio-2010 mstest code-coverage

使用Visual Studio 2010查看代码覆盖率数据时,我在给定的命名空间下看到以下输出:

SomeClass1
SomeClass2
SomeClass2.< >c__DisplayClass1
SomeClass2.< >c__DisplayClass19
SomeClass2.< >c__DisplayClass28
SomeClass3
SomeClass3.< >c__DisplayClass2F
etc

如果我展开任何带有“DisplayClass”的条目,我会发现它是一个在其中有lambda表达式的方法。由于如此多的lambda表达式,很难从代码覆盖率结果中获得有意义的数据。

无论如何要清理此报告?

2 个答案:

答案 0 :(得分:1)

从lambda表达式生成的函数是您编写的代码的直接结果。由于编译器的扩展,他们可能会在报告中返回显示具有欺骗性的大量行数,但是您想要测试他们的行为是否正确。因此,它们应包含在覆盖率报告中。

我也同意这些意见:代码覆盖范围不应被视为精确的衡量标准。我认为它有一个重要的数字。

说了这么多......我认为你最好的希望是ExcludeFromCodeCoverage属性。它相当灵活,但通常适用于声明。如何将它应用于lambda对我来说并不清楚。

答案 1 :(得分:0)

您可以使用DebuggerNonUserCode属性标记该课程。

我不知道有什么办法可以排除特定的方法模式,编译器正在将你的lambda表达式转换为你注意到的方法(例如:SomeClass3。&lt;&gt; c__DisplayClass2F)