繁体   English   中英

单元测试WCF服务正在启动

[英]Unit Testing WCF Service is launching

我是WCF的新手。 我创建了一个基本服务,并用调试器和WCFTestClient对它进行了工程师测试。 我从未写过自己的WCF客户端。 现在,我需要为该服务构建单元测试。

我的课程:

IXService
CXService
CServiceLauncher

(是的,我知道C前缀不符合当前的标准,但是我的客户的标准要求它。)

可以直接针对XService测试我的服务功能,但是我也需要测试CServiceLauncher 我要做的就是连接到URI,并发现那里是否有服务在运行,以及它提供了什么方法。

我读过的其他问题:

测试大纲:

    public void StartUiTest()
    {
        Uri baseAddress = new Uri("http://localhost:8080/MyService");
        string soapAddress = "soap";
        IUserInterface target = new CServiceLauncher(baseAddress, soapAddress);
        try
        {
            Assert.AreEqual(true, target.StartUi());
            /// @todo Assert.IsTrue(serviceIsRunning);
            /// @todo Assert.IsTrue(service.ExposedMethods.Count() > 4);
            Assert.Inconclusive("This tells us nothing about the service");
        }
        finally
        {
            target.StopUi();
        }
    }

我只需要构建一个简单的客户端。

参考: http//webbeyond.blogspot.com/2012/11/wcf-simple-wcf-client-example.html

  1. 将服务参考添加到测试项目
  2. 添加到测试文件:

    using System.ServiceModel;

    using MyTests.ServiceReferenceNamespace;

try中的代码现在是:

            Assert.AreEqual(true, target.StartUi());
            XServiceClient client = new XServiceClient();
            client.GetSessionID();
            Assert.AreEqual(CommunicationState.Opened, client.State, "Wrong communication state after first call");

这不是一个真正的答案,所以请放轻松。

我一直在尝试做类似的事情,并且了解到集成测试很困难。 这很困难,因为您需要执行许多隐藏的任务,例如:

  • 确保您可以定期运行测试
  • 确保集成测试可以在测试环境上运行
  • 维护不同的配置文件,因为您的环境将与测试环境不同
  • 配置可以自动运行集成测试(CI)的设备
  • 祈祷路径,测试环境,配置,托管平台等都不会发生变化。
  • 争取安全权限,因为通常情况下,如果没有管理员权限,测试对象就无法托管WCF服务
  • 维护测试工具

对我来说,这是巨大的头痛,却毫无收获。 不要误会我的意思,集成测试是一件很积极的事情,它只需要大量时间进行开发和支持。

我学到了什么? 这样做不会影响WCF服务的集成测试。 相反,我编写了大量的单元测试来测试合同,状态和行为。 通过涵盖这些内容,我可以确定软件的质量。 在部署过程中,我会与WCF进行集成。 通常,这只是配置环境或VM的一场战斗,然后,下次,部署将以(半)自动化的方式顺利进行并顺利进行。

大多数人也会使用Chef等工具自动进行部署,这些工具可以完全配置环境并部署WCF服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM