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

使用WCF、依赖注入和单元测试的服务间通信体系结构,wcf,unit-testing,architecture,soa,Wcf,Unit Testing,Architecture,Soa,我是WCF的新手,在很大程度上,我也是分布式编程的新手。我正在从事一个需要4个独立服务的项目 我试图正确定义每个服务的每个组件的责任。假设我有需要与服务A通信的服务B。对于每个服务,我定义了服务实现类、服务主机和代理类 为了进行单元测试,我使用依赖项注入——因为服务B需要与服务A通信,所以我将A的代理类的实例作为构造函数参数传递给服务B 当我对服务B进行单元测试时,我必须让A的服务主机启动并运行 这是进行依赖注入的错误方式吗?如果是,为什么,你建议我怎么做 有更好的方法进行依赖注入吗 我是否必须

我是WCF的新手,在很大程度上,我也是分布式编程的新手。我正在从事一个需要4个独立服务的项目

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

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

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

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

    • 而不是生成客户端

      ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration");
      IHello client = clientFactory.CreateChannel();
      string result = client.SayHello();
      
      ChannelFactory客户端工厂=新的ChannelFactory(“targetConfiguration”);
      IHello client=clientFactory.CreateChannel();
      字符串结果=client.SayHello();
      
    • 尽可能使用接口类型

    • 其中一个模拟对象框架()用于在编写测试时注入接口实现
    关于第三个问题,如果您的目标是测试特定的小单元(单元测试的要点:),那么答案是“否”。但最好编写一些集成测试,以确保没有任何序列化/托管问题