繁体   English   中英

.NET代码覆盖工具不适用于加载.net程序集的本机应用程序

[英].NET code coverage tools don't work on native applications that load .net assemblies

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

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

我想知道上述任何工具是否存在针对此案例的解决方法,或者是否存在我可以使用的其他代码覆盖工具或技术。 TIA。

我们的C#测试覆盖率工具应该适用于此。

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

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

我不能自称知道dotCover是如何工作的。

如果您正在寻找原生应用程序的覆盖范围,我会查看Coverage Validator等工具

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM