【问题标题】:Turning off Lamba Expressions in Visual Studio 2010 for Code Coverage在 Visual Studio 2010 中关闭 Lambda 表达式以获得代码覆盖率
【发布时间】:2011-10-24 17:32:39
【问题描述】:

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

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

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

是否有清理此报告的方法?

【问题讨论】:

  • 就我个人而言,我将代码覆盖率结果视为“大结果”,而不是按方法报告的单个覆盖率方法。如果我有真正关心的方法,那么我会使用可视化工具(我假设 VS 有一个)来查看实际覆盖的线(尽管这是序列点,所以可能不是 100%)。
  • 我同意肖恩的观点,看大局,虽然如果 VS 能够将 lambda 相关的类折叠到声明类下会很好。

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


【解决方案1】:

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

我也同意 cmets:不应将代码覆盖率视为精确测量。我认为它有一个有效数字。

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

【讨论】:

    【解决方案2】:

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

    我不知道排除特定方法模式的任何方法,并且编译器正在将您的 lambda 表达式转换为您注意到的方法(例如:SomeClass3.c__DisplayClass2F)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      相关资源
      最近更新 更多