使用WCF,依赖注入和单元测试的服务间通信体系结构

时间:2009-04-24 14:51:13

标签: wcf unit-testing architecture soa

我是WCF的新手,在很大程度上也是分布式编程。我正在开发一个需要4个离散服务的项目。

我正在尝试正确定义每项服务的每个组件的职责。假设我有服务B需要与服务A通信。对于每个服务,我已经定义了服务实现类,服务主机和代理类。

为了进行单元测试,我使用依赖注入 - 因为服务B需要与服务A通信,我已经将A的代理类的实例作为服务B的构造函数参数传递。

当我进行单元测试服务B时,​​我必须启动并运行A的服务主机。

  1. 这是依赖注入的错误方式吗?如果是这样,为什么,你怎么建议我这样做?
  2. 是否有更好的方式进行依赖注入?
  3. 我是否必须运行服务主机才能在单元测试中获得正确的结果?

1 个答案:

答案 0 :(得分:1)

考虑使用

  • ChannelFactory而不是生成的客户端。

    ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration");
    IHello client = clientFactory.CreateChannel();
    string result = client.SayHello();
    
  • 尽可能使用接口类型

  • 一个模拟对象框架(example),用于在编写测试时注入接口实现。

关于你的第三个问题,如果你的目标是测试特定的小单位(单元测试的全部点:),答案是“否”。但是编写一些集成测试总是更好,以确保您没有任何序列化/托管问题。