并行执行和MS单元测试

时间:2010-11-23 09:49:37

标签: .net unit-testing side-by-side

这里的环境是C#/。Net 4。

在我的MS单元测试单元测试项目中,我正在测试一段代码,该代码使用COM dll进行一些日期转换计算(这反过来使用了一些其他COM DLL,因此涉及所有三个COM DLL)。

当在正常的应用程序/服务设置中运行时,我可以通过使用链接到COM dll的程序集标识的清单来实现并行执行,但是在尝试执行相同操作时我的单元测试项目,由于“未注册课程”的例外,我总是失败。

现在,我已经尝试了这个:

  • 嵌入测试DLL清单
  • 嵌入测试DLL清单,COM dll显示+ COM DLL本身

但无济于事。所以我想知道:我怎样才能让单元测试环境知道COM通过清单链接?对我来说,似乎DLL清单链接不是很有用(EXE清单工作正常),但通常这些想法等于做错了...

我通常都非常成功地搜索这样的东西,但是在这一次,我的点击次数很少,而且没有任何类似的东西,所以请,如果你有任何想法或输入,请分享:)如果需要详细说明,请告诉我。

(我知道,可以通过一些依赖注入正确的地方来避免使用COM dll,但是现在我想探讨关于单元测试并行设置的这种情况。) / p>

亲切的问候

的Jesper

1 个答案:

答案 0 :(得分:0)

我不熟悉MS单元测试,所以这只是猜测。

在正常的应用程序设置中,您通过应用程序清单引用了COM服务器清单,因此一般的“进程激活上下文”包含正确的引用。

在单元测试场景中,您不控制应用程序,因此进程激活上下文没有正确的引用。 您已经在您的DLL中嵌入了测试dll清单,但除非您执行额外的工作,否则所有操作都允许针对清单解析静态DLL依赖项。只要您的dll代码处于活动状态,清单激活上下文就不会“处于活动状态”;您必须自己管理此上下文,方法是手动创建并激活调用COM服务器的上下文。

例如,请查看CodePlex上OneCode项目中的CSRegFreeCOMClient