【问题标题】:How to test COM object integrity automatically?如何自动测试 COM 对象的完整性?
【发布时间】:2011-01-29 09:09:26
【问题描述】:

每个 COM 对象都必须有integrity。简而言之,这意味着如果一个对象实现了 3 个接口 - ABC,并且我有 A* 指向该对象的指针,我必须能够成功 QueryInterface() B 和 @987654328 @ 并且拥有B 我必须能够检索AC 并且拥有C 我必须能够检索AB

现在我的对象实现了 5 个接口,我想测试它的完整性。为上述所有内容编写检查将需要大量的努力。是否有工具或一些易于调整的代码或代码模式可以做到这一点?

【问题讨论】:

    标签: c++ testing visual-c++ com interface


    【解决方案1】:

    如果我理解正确,您想证明您的实现遵守 COM IUnknown 规则(传递性、自反性等),并且您担心基于接口数量的指数爆炸,对吗?

    如果您有组件类型库,您可以编写一个应用程序来计算组件类/接口并发出代码来测试这些规则(此应用程序是通用的,可以与任何具有类型库的组件一起使用)。也许你甚至可以在网上找到一个(我没有搜索)

    最好的

    阿德里亚诺

    【讨论】:

    • 实际上指数曝光不是问题,因为很难想象任何对象实现了超过 20 个接口。问题是如何编写能够测试所有必要的 QI() 请求路径的代码。
    【解决方案2】:

    我没有看到问题。如果您实现 A、B 和 C,则接口 A 必须为 A、B、C 和 IUnknown 正确 QI。包括自己。所有接口的测试都是相同的,您只需要一个带有 IUnknown* 参数的小函数。

    【讨论】:

    • 这样做了,效果很好。如果将 IUnknown 添加到要测试的接口集中,它会变得更加简单。
    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多