【问题标题】:MSTest code coverage file is too big, How to selectively generate code coverageMSTest 代码覆盖率文件太大,如何选择性地生成代码覆盖率
【发布时间】:2011-12-28 09:50:13
【问题描述】:
我的 Visual Studio 项目中有一个 MSTest 代码覆盖设置。但是,当代码覆盖率运行时,它会生成一个太大的覆盖率文件(data.coverage)。原因是它会扫描所有 dll、第三方库。我的项目有一些 C++ 解决方案,它为头文件中的所有方法生成代码覆盖率。请注意,在我的测试设置(local.testsettings,这是当前活动的)中,我只选择了一个 xyz.dll(我想要获得代码覆盖率的那个)。但是,最终的代码覆盖率包含 xyz.dll 所依赖的代码覆盖率信息。如何配置 MSTest 以使我的代码覆盖率不会超出 xyz.dll 的边界?
注意:当我尝试使用 Hudson emma plugging 生成 xml 报告时,拥有一个大的 data.coverage 文件会导致问题。最终的xml大约是750MB
【问题讨论】:
标签:
unit-testing
mstest
code-coverage
emma
【解决方案1】:
测试覆盖率工具如何表示它记录的数据(探针位置、探针命中)显然会影响所收集的测试覆盖率数据的可管理性。
我无法谈论 MS 如何对这些数据进行编码,但很明显您对结果不满意。
我同意 750Mb 的输出似乎有点过头了。
问题可能是您只是在您使用每个方法/功能时
只希望检测 DLL。我建议你找一个开关来控制仪表。我无法通过 MS 工具进一步帮助您。
我们的C++ Test Coverage 将让您仅指定您想要检测的文件。它确实会生成一个探针位置文件,每个探针都有一个条目,但它的大小与检测的代码量成正比,而且它不是一个庞大的 XML 文件。一百万行检测代码会生成一个几兆字节的探测位置文件。在执行时,您会生成探针命中数据;在最坏的情况下,几乎每个探测器都以字节复数为单位测量输出,如果覆盖范围低或高,则要小得多。对于同样的百万行,我预计这将是另一个兆字节。
配置我们的工具以检测 DLL 可能需要付出更多努力; MS 具有控制编译器的优势,而我们没有。获得可用答案的代价似乎很小。