【问题标题】:Unit testing a WCF service对 WCF 服务进行单元测试
【发布时间】:2014-01-20 17:01:41
【问题描述】:

我正在设计一个企业级 Web 应用程序,它将具有一个数据层 + SQL 数据库、一个与数据层通信的 WCF REST Web 服务层,然后是一个将与 WCF REST Web 服务通信的 MVC 网站。我想在设计的每个级别进行自动单元测试。

我已经创建了一个很好的数据层单元测试项目,它测试 EF 模型、存储库、操作等,并且有大约 15 个测试我可以单击一个按钮并运行到目前为止,测试数据层提供的所有功能。

我想在 WCF 服务层也有相同的功能,但我不知道如何让自动测试项目针对 WCF 服务运行。我看过关于使用WCF测试客户端在后台加载服务并能够为每个服务方法输入参数并查看结果的文章,但我不想要手动过程,我希望它是自动化的,来模拟数据层并单独测试服务调用。理想情况下,我想测试它的 RESTful 方面,因此能够模拟 GET/POST/PUT/DELETE 等,还可以使用错误的方法调用某些方法并确认它按预期失败等等.

是否有一个很好的解决方案可以自动执行此操作,还是我处理错了?

【问题讨论】:

标签: c# wcf unit-testing testing mocking


【解决方案1】:

您当然可以创建可以自动运行的测试来测试 WCF 服务。

在此处查看 SO 讨论:WCF Unit Test

但是,您在测试策略/测试用例设计中需要问的一个问题是,有多少 REST 端点测试需要成为单元测试,多少需要成为系统/集成测试的一部分。因为 wcf 端点(包括 REST)将允许您将系统视为黑盒并在不了解内部类型的情况下进行系统测试。

【讨论】:

    【解决方案2】:

    我写了一篇关于如何做到这一点的文章。您必须将业务逻辑抽象为调用真实服务或模拟服务的服务。 http://gaui.is/how-to-mock-and-test-wcf-services-using-moq/

    【讨论】:

      【解决方案3】:

      您可以将服务的地址更改为 localhost。 这样你就可以启动服务并在没有模拟的情况下对其进行测试

      【讨论】:

      • 这是个坏主意,因为服务(本地或远程)可以对远程数据库进行一些更改,或者连接到其他一些服务/ESB 等。
      猜你喜欢
      • 2010-09-07
      • 2023-03-16
      • 1970-01-01
      • 2013-09-26
      • 2019-01-05
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多