2010-03-19 21 views
1

每個COM對象必須有integrity。在簡化的計算,這意味着,如果一個對象實現3個接口 - ABC和我有A*指向對象我必須能夠成功QueryInterface()BC和具有B我必須能夠檢索AC和有C我必須能夠檢索AB如何自動測試COM對象完整性?

現在我的對象實現了5個接口,我想測試它的完整性。爲上述所有內容撰寫支票需要付出相當大的努力。是否有工具或一些易於調整的代碼或代碼模式可以做到這一點?

回答

2

我看不到問題。如果你實現A,B和C,那麼接口A必須適合A,B,C和IUnknown。包括自己。測試對於所有接口都是相同的,您只需要一個接受IUnknown *參數的小函數。

+0

難道這樣的,偉大工程。如果將IUnknown添加到要測試的一組接口中,則變得更加簡單。 – sharptooth 2010-03-19 11:28:00

1

如果我正確地理解了它,你想證明你的實現遵守COM IUnknown規則(傳遞性,反身性等),並且你關心基於接口數量的指數爆炸嗎?

如果您有組件類型庫,您可以編寫一個應用程序,它可以計算出coclasses/interfaces併發出代碼來測試這些規則(此應用程序是通用的,可以與任何具有類型庫的組件一起使用)。也許你甚至可以找到一個在網(我沒有搜索)

最佳

阿德里亞諾

+0

實際上,指數暴露不是問題的原因,因爲很難想象任何對象都實現了超過20個接口。問題是如何編寫確實測試所有必需的QI()請求路徑的代碼。 – sharptooth 2010-03-19 12:51:21