【问题标题】:Unit test can not load COM class单元测试无法加载 COM 类
【发布时间】:2011-10-18 07:21:12
【问题描述】:

我有一个引用 COM dll 的 .net 4 应用程序。使用带有 GUID 的 app.manifest 可以正常工作。

但是,当我尝试执行单元测试时,可执行文件是 QTAgent32.exe,我不知道如何让它加载 COM 类: System.Runtime.InteropServices.COMException:检索具有 CLSID {81273702-956F-4CBD-9B16-43790558EE29} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

我可以为 QTAgent32 使用清单吗?

【问题讨论】:

    标签: .net visual-studio-2010 unit-testing com


    【解决方案1】:

    我建议将 ServicedComponent(COM+ 类)作为实际执行逻辑的类的 this 包装器,然后对此类执行单元测试。

    如果您的类依赖于外部运行时环境,通常不可能对其进行单元测试。单元测试不应依赖于任何外部环境,无论是 IIS、文件系统、数据库、COM+ 等。恕我直言。

    【讨论】:

    • 谢谢埃里克。我不确定我是否理解你。实际上,我并不是直接测试 COM 类,而是使用一种包装器。但是,这个包装器需要 COM 类才能工作,因此最终无法执行测试。
    • 那么,你有一个外部开发的COM?我以为你也做了 COM 类。
    • 您是在本地开发盒还是在构建服务器上运行测试?如果在本地开发盒上,以管理员身份运行时是否有效?管理员应该有权自动注册 COM 组件?
    【解决方案2】:

    对于使用外部资源(即数据库)的单元测试,要成功部署,您必须如下定义集成的 TestCategory

    [TestCategory("Integration")]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-13
      • 2014-09-06
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 2014-02-28
      • 2020-01-02
      相关资源
      最近更新 更多