COM 的代码覆盖率 API
Code coverage for COM API
我正在尝试在 VS 2017 Enterprise 中获取一些 SpecFlow 测试的代码覆盖率。测试的目的是连接到 COM 服务并使用所有公开的 API。
当我 运行 "Analyze Code Coverage" 时,结果仅显示 SpecFlow 语句与我的测试代码相关的行和块。我想要的是至少有多少百分比的公开 API 调用正在测试中执行。
有没有办法获得这种详细程度? COM 服务是用 C++ 编写的,而测试是用 C# 编写的。不确定这是否真的有所作为。
如果您从 .NET 运行时调用 COM,无论您是否意识到,您都在使用 Runtime-Callable Wrapper (RCW)。
有几种方法可以 create an RCW. One way is to create it implicitly by adding a reference in visual studio. Another way is to use Tlbimp.exe 创建包含包装器的 .NET 程序集。我建议您使用后一种方法,并将您的代码覆盖率统计数据集中在包装代码上。如果您在包装器上实现了高代码覆盖率级别,则意味着您正在调用高百分比的底层 COM 对象方法。
我正在尝试在 VS 2017 Enterprise 中获取一些 SpecFlow 测试的代码覆盖率。测试的目的是连接到 COM 服务并使用所有公开的 API。
当我 运行 "Analyze Code Coverage" 时,结果仅显示 SpecFlow 语句与我的测试代码相关的行和块。我想要的是至少有多少百分比的公开 API 调用正在测试中执行。
有没有办法获得这种详细程度? COM 服务是用 C++ 编写的,而测试是用 C# 编写的。不确定这是否真的有所作为。
如果您从 .NET 运行时调用 COM,无论您是否意识到,您都在使用 Runtime-Callable Wrapper (RCW)。
有几种方法可以 create an RCW. One way is to create it implicitly by adding a reference in visual studio. Another way is to use Tlbimp.exe 创建包含包装器的 .NET 程序集。我建议您使用后一种方法,并将您的代码覆盖率统计数据集中在包装代码上。如果您在包装器上实现了高代码覆盖率级别,则意味着您正在调用高百分比的底层 COM 对象方法。