【发布时间】:2012-09-11 19:06:19
【问题描述】:
我的应用程序中有以下几行代码,我不知道为什么,但代码覆盖率告诉我它没有被覆盖:
var filters = from f in request.Filters
select new FilterDTO
{
FilterName = f.name,
Value = f.value
};
var filteredItems = repo.GetFilteredItems(filters);
它认为以下几行未涵盖:
select new FilterDTO
{
FilterName = f.name,
Value = f.value
};
其余部分 100% 覆盖。我的单元测试正在为 request.Filters 创建一个非空集合,所以我知道它正在正确地进行投影,但仍然认为代码没有被覆盖。
有没有人知道为什么感觉只有查询的选择部分被认为没有被代码覆盖?
【问题讨论】:
-
损坏的代码覆盖率工具?您是在测试中评估了 IEnumerable(使用 ToList() 或类似方法)还是只是创建它?
-
它是 Visual Studio 2010 终极版的默认代码覆盖工具。我想它可能在实施中存在缺陷。
-
你试过 Visual Studio 2012 看看有什么不同吗?
-
您是否考虑过使用其他工具,例如 NCover、OpenCover、PartCover?这些工具有一个 XML 输出,可以告诉您“代码点”在哪里以及它们在哪里检测。所有这些信息最终都来自 PDB 文件,因此它们只能与提供的内容一起使用。
标签: c# visual-studio code-coverage