【发布时间】:2011-04-07 22:06:10
【问题描述】:
我正在尝试为我的 C# 应用程序收集一些好的代码覆盖率统计信息,但我想忽略生成的 SubSonic 类,因为收集这些函数的代码覆盖率统计信息没有真正意义。
我已经编辑了 ActiveRecord.tt 文件以在每个方法和属性上包含 [ExcludeFromCodeCoverage] 属性,这已经在我的代码覆盖率窗口中删除了大部分不相关的结果。然而,尽管有代码覆盖排除属性,属性中的 lambda 表达式被标记为未覆盖。举个例子:
[ExcludeFromCodeCoverage]
int GetValue
{
get
{
this.SomeMethod(); // this is excluded
return this.Find(x => x.Value == this._Value); // this.Find is excluded
// but x => x.Value == ...
// is not.
}
}
这只发生在属性中。正如预期的那样,Lambda 表达式在方法中被忽略。
现在,对我来说,这很烦人,但不一定是致命的,因为我可以在浏览我的代码覆盖率列表时忽略这些表达式。但是,我们的客户要求我们的代码覆盖率要高于 95%。我不太可能让他们明白这个统计数据在很大程度上是无用的。
我可以自动生成单元测试以及 ActiveRecord.tt 文件,但这并不理想。
感谢您的宝贵时间。
【问题讨论】:
标签: c# unit-testing c#-4.0 code-coverage