1

我的 Visual Studio 项目中有一个 MSTest 代码覆盖设置。但是,当代码覆盖率运行时,它会生成一个太大的覆盖率文件(data.coverage)。原因是它扫描所有 dll、第三方库。我的项目有一些 C++ 解决方案,它为头文件中的所有方法生成代码覆盖率。请注意,在我的测试设置(local.testsettings,这是当前活动的)中,我只选择了一个 xyz.dll(我想要获得代码覆盖率的那个)。但是,最终的代码覆盖率包含 xyz.dll 所依赖的代码覆盖率信息。如何配置 MSTest 以使我的代码覆盖率不会超出 xyz.dll 的边界?注意:当我尝试使用 Hudson emma plugging 生成 xml 报告时,拥有一个大的 data.coverage 文件会导致问题。最终的 xml 大约是 750MB

4

1 回答 1

0

测试覆盖率工具如何表示它记录的数据(探测位置、探测命中)显然会影响所收集的测试覆盖率数据的可管理性。

我无法谈论 MS 如何编码这些数据,但很明显你对结果不满意。我同意 750Mb 的输出似乎有点过头了。

问题可能在于,当您只想检测 DLL 时,您只是在检测每个方法/函数。我建议你找一个开关来控制仪表。我无法使用 MS 工具进一步帮助您。

我们的C++ 测试覆盖范围将让您指定要检测的文件。它确实会生成一个探针位置文件,每个探针都有一个条目,但它的大小与检测的代码量成正比,而且它不是一个庞大的 XML 文件。一百万行检测代码会生成一个几兆字节的探测位置文件。在执行时,您会生成探针命中数据;在最坏的情况下,对于每个探测器,导出的字节数以复数形式测量,如果您的覆盖率低或高,则要小得多。对于同样的百万行,我希望这将是另一个兆字节。

配置我们的工具以检测 DLL 可能需要更多的努力;MS 具有控制编译器的优势,而我们没有。获得可用答案的代价似乎很小。

于 2011-12-29T17:50:05.303 回答