如何在CI构建中检测WCF中断更改

时间:2010-07-21 23:53:10

标签: c# wcf

我想自动测试我的WCF操作和数据合同是否在CI构建之间发生了重大变化。

编辑: 我认为这是一个自动集成测试。对WCF合同的添加更改不应该使测试失败。破坏性更改应该无法通过测试。

我想知道它破碎的那一刻。添加剂更改不会破坏合同。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果您将合同分解为单独的程序集,然后从客户端和服务器引用它,那么任何重大更改将在编译时立即显示。这样分享这样的参考资料已经在SO上多次讨论过了,所以我不会再讨论它了。

如果你只依赖于客户端生成的代理,那么你将遇到麻烦的地方,因为其他海报已经回答你将无法测试这个,除非你在构建后部署和运行集成测试。如果这是你的情况,那么你需要回顾我的第一段并从不同的程序集中引用相同的接口。

答案 1 :(得分:0)

首先,如果您考虑在每个服务引用的CI构建中自动执行“更新服务引用”,请再想一想。您不希望这样做 - 您希望提前考虑它,为每个引用项目执行更新,在本地构建它们,运行它们的测试等等。您不希望构建为您执行此操作只是因为合同发生了变化 - 客户可能尚未阅读此类更改。

其次,我认为在这种情况下“破坏变化”唯一有用的定义是运行所有自动化测试,看看是否有任何中断。这就是CI测试在其他代码的上下文中的用途;为什么要让服务与众不同?

答案 2 :(得分:0)

如前所述,这已经是一次集成测试,并且实际上可能需要做太多工作。但是您可以使用发现机制来查找可用的合同并围绕它们生成特征测试。每次部署服务时,都会重新运行检查以查找发生更改的所有位置。

这当然只是一个粗略的想法。它应该是可能的,但是那样说让我真的强烈建议这一点在你的优先事项列表中。编写有效的单元测试和良好的开发实践应该最大限度地减少潜在的问题,并且更容易破解。