gpt4 book ai didi

wcf - "Fast"WCF服务的集成测试

转载 作者:行者123 更新时间:2023-12-04 15:59:06 28 4
gpt4 key购买 nike

语境
我非常喜欢Roy Osherove所说的“快速集成测试”。这是集成测试,它可以:

  • 严格在您的开发箱上执行。无需单独的环境。
  • 尽管正在进行集成测试,但此类测试通常是通过您的单元测试工具(NUnit,MsTest等)启动的。
  • 通常在内存中运行:执行单个进程。
  • 运行速度很快。不应进行数秒之久的部署,而后要进行数秒之久的引导捆绑等。
  • 必须对源代码控制友好:
  • 其他开发人员应该能够简单地获取源代码并运行快速集成测试,而不必解决配置问题(例如,设置IIS虚拟目录等)。
  • 只要有可能,它就应该与持续集成(CI)自动化测试兼容。


  • 问题
    考虑到带有多个WCF服务的VS 2010解决方案需要进行集成测试,我一直在研究如何最好地做到这一点。我对测试设置的进一步要求是:
  • WCF服务是嵌套的。也就是说,在快速集成测试期间,一项服务可能会调用另一项服务。
  • WCF堆栈必须完全或大部分可操作。
  • 对于单元测试,直接调用服务契约(Contract)入口点可能是可以的,但对于这种形式的集成测试,则不是。
  • REST和BasicHttp绑定(bind)应该可以工作,并且最好也可以是wsHttpBinding。

  • Web.config
  • 每个WCF项目的web.config转换(XDT)应该是可操作的,即使为实现此测试而可能进行部署也可能不会进行部署。
  • 单元测试工具(例如MsTest或NUnit)不应要求使用统一的web.config来表示将在测试期间托管的所有服务。

  • WCF服务托管可以是32位或64位。
  • WCF服务托管可以是单元测试工具在内存中,也可以是通过Cassini,IIS Express等主机进行的进程外处理。
  • 我绝对倾向于内存中方法,因为它简化了测试同步问题。换句话说,我的某些WCF服务异步执行,并且在WCF响应已发送到文本设备之后完成。使用内存中方法,我可以将测试夹具设置为Monitor.Wait,以确保异步工作在测试退出之前完成。对于多进程托管和测试,我可能必须依靠文件系统和文件系统事件来实现相同的同步。


  • 回答?
    我想列出到目前为止的发现,并询问我缺少什么工具或技术。同样,此问题与Visual Studio 2010有关,尽管欢迎您提供有关2012的其他评论。
    对于内存解决方案,似乎有两个基本选择。对于每种服务,请使用 custom ServiceHost的一个实例,或者使用 variety of other self-hosting tools之一。在第二个链接中,最初的问题是关于生产托管的-但是列出的大多数工具都具有自我托管或内存托管的能力。
    上面第二个链接中提到的 CassiniDev的作者建议在回送测试(localhost)不足时使用CassiniDev。就我而言,我怀疑回送测试是可以的。那位作者建议,如果可以进行环回测试,则可以使用他的 WebDevServer code来编写一个更轻量级的故事。如果我理解正确,那么WebDevServer代码实际上是内部Visual Studio代码,他出于测试夹具自托管的目的而对其进行了反射和修改。
    对于现成的(多进程)解决方案,我看到有一种制作 Cassini fit the 64 bit requirement的方法。否则,对于IIS Express或IIS,我不确定开发人员与开发人员之间的可配置性问题。通常,当开发人员在特定计算机上配置IIS Express或IIS时,通常其他开发人员都没有该配置信息,并且正在努力使测试在自己的机器上进行。我见过开发人员会生成使用appcmd.exe来自动执行此类配置的脚本,但此类脚本经常维护得很差。我想尝试避免这种情况。
    无论哪种情况,我都相信 automating the web.config transform (XDT), without a deploy, is discussed here的选项。
    好的,有什么更好的策略和策略?我想知道...

    最佳答案

    这不能满足要求者所要求的快速集成测试的问题,但是下面的链接是有关如何使WCF可测试的最全面的指南。

    https://codereview.stackexchange.com/questions/33379/make-wcf-service-testable?newreg=016e2809b68248958ff3c45973efe643

    但是,我不能保证本指南将为您开发针对完整WCF功能堆栈的测试带来的帮助。

    关于wcf - "Fast"WCF服务的集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495558/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com