最近,我和我的同事一直在为一个 Java 项目编写集成测试。这些集成测试中的大多数都需要至少一个 SOAP Web 服务调用、LDAP 查询或其他依赖于我们不一定能够控制的端点的东西。其中一些 SOAP/LDAP 调用使用仍在开发中的库。
这最终意味着我们的集成测试有时会在构建过程中当机器停机、库更改或端点被更改时失败。在做了一些研究之后,我注意到人们在集成测试中使用实时端点似乎相当普遍,但我也发现了关于为什么使用实时端点可能有害的文章(http://martinfowler.com/articles/nonDeterminism.html #远程服务)。
我想知道在创建集成测试时什么更有意义:模拟所有端点,还是使用实时端点?似乎使用实时端点,尤其是在不可靠的情况下,会使测试变得不确定。但是,模拟似乎只能带您到此为止,并且您将无法测试在类似生产的环境中发生的情况。由纯模拟组成的集成测试对于验证除回归之外的任何内容是否有价值?