2010-11-23 22 views
1

這裏的環境是C#/。NET 4.側面的並行執行和MS單元測試

在我的MS單元測試單元測試項目中,我測試了一段代碼,它使用一個COM DLL一段時間轉換計算(這反過來使用一些其他COM DLL,因此在所有三個COM DLL中都有涉及)。

在正常的應用程序/服務設置中運行時,通過使用鏈接到COM dll的程序集標識的清單,並行執行並沒有問題,但是當嘗試執行相同的操作時從我的單元測試項目中,我總是因爲'未註冊類'例外而失敗。現在

,我這個已經嘗試過:

  • 嵌入測試DLL清單
  • 嵌入兩個測試DLL清單中,COM DLL文件清單+的COM DLL文件本身

但無濟於事。所以我想知道:我怎麼能讓單元測試環境意識到通過清單連接COM?對我來說,似乎DLL清單鏈接不工作(EXE清單工作正常),但通常這些想法等於做錯了什麼...

我通常很成功地在搜索這樣的東西,但在這一個,我有很少的點擊,沒有什麼類似的,所以請,如果你有任何想法或意見,請分享:)如果需要闡述,請讓我知道。我知道,使用COM dll可能可以通過一些依賴注入來避免正確的地方,但現在我想探討這種情況,關於單元測試的並行設置)。

親切的問候

加斯帕

回答

0

我不熟悉的MS單元測試,所以這只是猜測。

在您正常的應用程序設置中,您通過應用程序清單引用了COM服務器清單,因此一般的「流程激活上下文」包含適當的引用。

在單元測試場景中,您不控制應用程序,因此進程激活上下文沒有適當的引用。 您已經將測試DLL清單嵌入到您的DLL中,但除非您做了額外的工作,否則所有這些都會允許靜態DLL依賴關係根據清單進行解析。每當您的dll代碼處於活動狀態時,清單激活上下文都不是「活動的」您必須自己管理此上下文,方法是手動創建和激活COM調用服務器上下文的上下文。

例如,查看CodePlex上OneCode項目的CSRegFreeCOMClient