3

我正在为 Revit Architecture 编写一个插件模块,它提供了一个 .NET API。本质上,您使用实现特定接口的类创建程序集。Revit 然后加载程序集并调用接口。

我希望能够获得插件代码的持续代码覆盖率指标,但发现所有典型的代码覆盖率工具(NCover、PartCover、dotCover)在这种情况下都不起作用,因为主机 Revit 应用程序( Revit.exe) 是 Windows 本机应用程序,而不是托管应用程序。NCover 文档明确指出,如果所涵盖的进程是本机应用程序进程,则 NCover 将不起作用。我假设其他工具使用的检测技术是相似的,因此无法正常工作的根本原因是相同的。

我想知道对于上述任何工具是否有针对这种情况的解决方法,或者是否有其他代码覆盖工具或我可以使用的技术。TIA。

4

2 回答 2

0

我们的C# 测试覆盖工具应该可以解决这个问题。

它通过检测源代码来工作;您运行检测的源代码(通过任何方法,包括传统的编译和运行技术)。因此,它不关心代码是如何执行的,只关心它以某种方式被执行。仪表数据收集在一个添加的类中,您可以完全控制导出数据的方式和时间,因此您可以从任意环境中导出。

于 2011-05-11T04:41:55.290 回答
0

NCover、PartCover 和 dotCover 是 .NET 覆盖工具,它们通过检测 IL(我知道 PartCover 和 NCover 使用 ICorProfilerCallback 接口和 JITCompilationStarted 事件等)来收集覆盖信息,因此他们不知道如何处理本机代码(即使它们实际上是用本机代码编写的。)。

我无法自称知道 dotCover 是如何工作的。

如果您正在寻找本机应用程序的覆盖范围,我会查看诸如Coverage Validator之类的工具

于 2011-06-21T06:02:29.793 回答