如何为NCOVER合并操作指定大量文件?

时间:2010-07-28 23:54:25

标签: .net ncover

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

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

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

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

4 个答案:

答案 0 :(得分:1)

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

我可以问你为什么要自己运行每个测试。您是否使用包含功能仅对正在运行的代码进行检测,或者您的所有覆盖文件都非常大?

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

答案 1 :(得分:1)

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

myhelper.exe coveragedirectory

不是

myhelper.exe coveragedirectory * .xml

命令行长度限制是DOS 1.0的“特性”,因此是Windows内置的模拟器。你尝试过使用PowerShell吗?

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

通过这个解决方案,我能够使我们的运行速度比旧的merge-after-each-test方法快20%,这很好。 (覆盖率运行仍然是非覆盖率运行的四倍,但我们不需要为每个测试运行覆盖率)

当我尝试使用commondream的答案时,不幸的是NCover会定期崩溃。我不认为测试系统启动.NET 1,1.1,2.0,3.0,3.5和4.0程序集,以及像silverlight软件包和紧凑框架这样的东西(我们的产品需要能够正常工作)所有这些组件)。如果你不需要疯狂地运行那种东西,那么他描述的//pn选项可能会正常工作。

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

希望这有助于将来遇到类似问题的任何人:)