0

我有一个大型验收测试套件,它运行源应用程序数千次,为每次运行创建一个 NCOVER 报告。每次测试后,它会将生成的代码覆盖率报告合并为整个应用程序的大型“主”覆盖率报告。

我在这里担心的是我遇到了Shlemiel the Painter问题,因为合并操作正在为每个测试解析大型覆盖文件。

我可以将多个覆盖文件传递给NCover.Reporting.Exe实际上进行合并的 ,但是当我尝试一次将它们全部传递时,我遇到了操作系统对命令行长度的限制。

是否NCover.Reporting提供某种输入覆盖率报告列表,我可以将其保存到文件中,并让它一次性合并所有报告?

4

4 回答 4

1

我会一次合并 25-50 个,最后将它们合并在一起。

请问您为什么要单独运行每个测试。您是否使用包含功能仅检测您正在运行的代码,或者您的所有覆盖文件都非常大?

您也可以通过电子邮件发送支持,他们可能有更好的选择。

于 2010-07-29T03:36:15.127 回答
1

@joe 问题是您必须生成配置文件。从理论上讲,他可以通过编写一个小帮助程序来做到这一点,将 DIRECTORY 中的所有文件添加到配置文件中,但是您必须使用没有文件过滤器的目录名称,即

myhelper.exe 覆盖目录

不是

myhelper.exe 覆盖目录*.xml

命令行长度限制是 DOS 1.0 的一个“特性”,因此也是 Windows 中内置的模拟器的一个“特性”。您是否尝试过使用 powershell?

于 2010-07-29T05:09:43.847 回答
1

我们刚刚更新了 NCover 以更有效地处理 NCover.Console 下的多个覆盖运行。假设您每次都运行相同的应用程序,我会确保您已更新到 NCover 3.4.12 并在用于生成应用程序的脚本上使用 //coverall 选项运行 NCover.Console,而不是每个 NCover启动应用程序的时间。这将生成一个合并的 XML 文件,该文件应该为您处理事情。

请随时发送电子邮件至 support@ncover.com,如果需要,我们可以为您提供帮助。请务必提及此网址。

于 2010-07-29T11:55:27.290 回答
0

好吧,我决定的有点像斯蒂芬沃德的回答。我将所有覆盖文件放入一个目录并运行NCover.Reporting.exe Path\To\My\Directory\*.xml //s Merged.nccov.

他没有得到复选标记,因为他的回答告诉我我不能在命令行上使用通配符是不正确的;事实上,通配符是NCover 识别该目录中 XML 文件的唯一方法。我认为他已经习惯了 Unix 世界(考虑到他的回答中有一些 Unix FUD),shell 负责处理通配符。windows shell 不会尝试扩展通配符,因此我们没有遇到长度限制。

不过,使用这个解决方案,我能够使我们的运行速度比旧的每次测试后合并方法快 20%,这很好。(覆盖运行仍然是非覆盖运行的四倍,但我们不需要为每个测试运行覆盖)

当我尝试 commondream 的答案时,不幸的是 NCover 会定期崩溃。我认为测试系统不喜欢启动 .NET 1、1.1、2.0、3.0、3.5 和 4.0 程序集,以及 silverlight 包和紧凑框架之类的东西(我们的产品需要能够在所有这些类型的程序集)。如果您不需要为运行那种东西而发疯,那么//pn他描述的选项可能会很好用。

当我尝试 joe.feser 的回答时,不幸的是我无法弄清楚 NCover 报告设置文件的格式。报告工具接受的 XML 有大量文档;它查找的根 XML 节点除外。它拒绝识别我生成的任何 XML 文件,因为根节点命名不正确;我认为它正在验证我不知道的某种形式的 DTD。如果有人想发布示例文件,请继续。

希望这对将来有类似问题的人有所帮助:)

于 2010-07-30T01:20:09.943 回答