我也在 MSDN 论坛上问过这个问题,但没有找到解决方案:
http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3686852&SiteID=1
正如我所看到的,这里的基本问题是互操作程序集实际上不包含任何可以检测的 IL(可能除了一些委托之外)。因此,尽管我可以将一个测试项目组合在一起来练习互操作层,但我无法了解我实际调用了多少这些方法和属性。
计划 B 是编写一个代码生成器,该生成器创建一个 RCWW(运行时可调用包装器包装器)库,并为代码覆盖目的进行检测。
编辑:@Franci Penov,
是的,这正是我想要做的。交付给我们的 COM 组件构成了一个包含大约十几个 DLL 的库。3000种。我们在我们的应用程序中使用该库并负责测试该互操作层,因为向我们提供库的小组只进行了最少的测试。代码覆盖率将使我们能够确保所有接口和 coclass 都得到执行。这就是我正在尝试做的所有事情。我们有单独的测试项目来运行我们自己的托管代码。
是的,理想情况下,COM 服务器团队应该测试和分析他们自己的代码,但我们并不生活在一个理想的世界中,我必须根据他们的工作交付高质量的产品。如果可以生成一份测试报告,表明我已经测试了他们 80% 的代码接口并且其中 50% 的代码接口没有像宣传的那样工作,那么我可以在需要修复的地方完成修复,而不是解决问题。
您提到的模拟层会很有用,但最终不会实现测试互操作层本身的目标,而且我当然不想手动维护它——我们受 COM 人员的摆布接口的变化。
就像我上面提到的那样——下一步是为包装器生成包装器,并为测试目的检测这些包装器。