测试WCF服务的策略

3

测试WCF服务的首选策略是什么?

我应该先实现服务,然后托管它们,再进行测试吗?

还是

我应该先实现服务,然后测试服务DLLS,最后再托管它们?

您能否推荐一个好的WCF测试策略?

我已经实现了一些WCF服务,这些服务将在内部网络中部署,使用wshttpbinding进行托管,并在Windows服务下运行。


1
你觉得做与其他应用程序相同的测试怎么样? - John Saunders
3个回答

8
我通常会创建两组测试,其中一组是单元测试,我会创建服务实现的一个实例并对其进行测试。这完全绕过了WCF。
然后我将另一个测试项目称为集成测试。在这个项目中,我将启动实际的WCF服务实例(通常是在自托管的方式下),创建WCF客户端的一个实例,并调用客户端并验证结果。这里使用了WCF,基本上只是通过localhost查询我的服务。
我发现这样进行测试可以提供最好的覆盖率,因为有时您可能会遇到WCF错误,如果绕过WCF,您通常无法捕获这些错误。

1
好的。谢谢。我该如何模拟 WCF 服务中使用的数据层接口? - InfoLearner
3
在我的情况中,我的服务实现将数据层进行依赖注入。在我的单元测试中,我使用Moq对它们进行模拟,并将它们通过构造函数注入到我的服务实现中。然而,我的集成测试没有对数据层进行任何模拟。这主要是基于我的情况而言;我们的集成测试确实测试整个应用程序,从WCF请求到数据库再返回。然而,如果使用像Unity这样的依赖注入框架,很容易通过不同的Unity配置来运行Intg测试,以注入模拟数据层。 - CodingWithSpike

2

我的WCF服务没有任何逻辑,它总是将调用委派给另一个服务。

所以我可以在不引用WCF的情况下测试服务。

这种方法对我来说很有效,用于测试WCF服务的方法

例如:

public class CalcService
{
   public int Add(int x, int y) 
   {
       return x+y;
   }
}

计算服务主机

public class CalculaterService
{

   private CalcService _calcService;
   public CalcService CalcService {get { return _calcService;}}

   public CalculaterService(CalcService calcService) 
   {
      _calcService = calcService;
   }

   public int Add(int x, int y) 
   {
     return CalcService.Add(x, y);
   }

}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接