【问题标题】:Side-by-side execution and MS Unit Test并行执行和 MS 单元测试
【发布时间】:2010-11-24 14:46:11
【问题描述】:

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

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

在正常的应用程序/服务设置中运行时,通过使用链接到 COM dll 程序集标识的清单来让并行执行工作没有问题,但是当尝试从我的单元测试项目,由于“类未注册”异常,我总是失败。

现在,我已经尝试过了:

  • 嵌入测试 DLL 清单
  • 同时嵌入测试 DLL 清单、COM dll 清单 + COM DLL 本身

但无济于事。所以我想知道:如何让单元测试环境知道通过清单链接的 COM?对我来说,DLL 清单链接似乎不太正常(EXE 清单工作正常),但通常这些想法等于做错事......

我通常在搜索这样的东西方面非常成功,但是在这个方面,我的点击率非常低,也没有类似的东西,所以如果你有任何想法或意见,请分享:)如果需要详细说明,请告诉我。

(我知道,COM dll 的使用可能可以通过在正确的位置进行一些依赖注入来避免,但现在我想探讨一下有关单元测试并行设置的案例)。

亲切的问候

杰斯帕

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2018-05-21
      • 2012-03-28
      • 2022-01-25
      相关资源
      最近更新 更多