使用Visual Studio 2010查看代码覆盖率数据时,我在给定的命名空间下看到以下输出:
SomeClass1
SomeClass2
SomeClass2.< >c__DisplayClass1
SomeClass2.< >c__DisplayClass19
SomeClass2.< >c__DisplayClass28
SomeClass3
SomeClass3.< >c__DisplayClass2F
etc
如果我展开任何带有“DisplayClass”的条目,我会发现它是一个在其中有lambda表达式的方法。由于如此多的lambda表达式,很难从代码覆盖率结果中获得有意义的数据。
无论如何要清理此报告?
答案 0 :(得分:1)
从lambda表达式生成的函数是您编写的代码的直接结果。由于编译器的扩展,他们可能会在报告中返回显示具有欺骗性的大量行数,但是您想要测试他们的行为是否正确。因此,它们应包含在覆盖率报告中。
我也同意这些意见:代码覆盖范围不应被视为精确的衡量标准。我认为它有一个重要的数字。
说了这么多......我认为你最好的希望是ExcludeFromCodeCoverage属性。它相当灵活,但通常适用于声明。如何将它应用于lambda对我来说并不清楚。
答案 1 :(得分:0)
您可以使用DebuggerNonUserCode属性标记该课程。
我不知道有什么办法可以排除特定的方法模式,编译器正在将你的lambda表达式转换为你注意到的方法(例如:SomeClass3。&lt;&gt; c__DisplayClass2F)