2010-11-23 73 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