2017-12-27 239 views
3

我使用Spring 1.5.9引导,我们有一个微型的服务,与其他微服务连接。如何管理多个微服务并在开发(而非测试)环境中嘲笑它们?

对于集成测试和开发(开发人员计算机)我想模拟/存根其他微服务的其余呼叫。对于单元/集成测试,这个问题已经被回答了很多次:WireMock,MockBean和MockRestServiceServer都是很好的工具。但发展我想弄清楚最好的办法。

为什么?开始实际的微服务所依赖的每个微服务是一个问题。所以这个想法是让微服务独立并且在开发人员的机器或其他地方没有任何额外的服务器的情况下启动。所以,一个简单的`mvn spring-boot run'就足以启动我的微服务,并且不需要担心其他微服务。

所以,我的问题是:什么模拟/存根休息的建议的形式给出的发展要求? Wiremock在这种情况下也是一个很好的方法吗?

我的项目

我在src/main/java/resources/两个文件:“默认”(application.properties,这是用于其他环境)和“开发”(application-dev.properties,用于开发)。

在我的测试(src/test/java/resources/)我只有一个application.properties,那就是基本application-dev.properties的副本。

我已经尝试使用Wiremock集成测试和行之有效的。但我不想将它用于开发,因为我不太喜欢在我的JAR中引入仅用于开发的依赖关系。我的意图是使用相同的策略来进行集成测试和开发。

那么,有什么选择?

+0

为什么不为第二个Web服务编写客户端,作为Spring bean,并在单元测试中模拟这个Spring bean?用同样的方式写DAO作为数据库的客户端,并在单元测试中模拟DAO。 –

+0

嗨!单元/集成测试问题已解决(使用Wiremock)。我的问题是关于正常的开发环境,当你运行弹簧引导。我不知道是否使用相同的方法是“正确”的事情。 – Dherik

+1

相关:https://stackoverflow.com/questions/39891218,https://softwareengineering.stackexchange.com/questions/332972,https://softwareengineering.stackexchange.com/questions/334609 – tkruse

回答

2

所以要在本地例如启动您的microService对于手动测试,但不想启动它所依赖的所有其他微服务。

团队执行下列操作之一:

  • 连接本地微服务共享,部署微服务实例(分期环境)
  • 连接本地的microService其他微服务的易于推出搬运工图像
  • 连接到一个本地运行的模拟一些/所有其他微服务的线模实例。您可以从您的microService
  • 开始wiremock独立为单独写其他微服务的一小部分轻质定制模拟(只比wiremock更好,如果有做一些业务逻辑)
  • 不要连接到任何东西,但返回空值来自内部API客户端。
  • 其实本地

哪个最适合你的作品取决于你的环境,究竟其他microserivce依赖提供的功能,启动所有其他微服务。你不能期望任何这些都是最适合所有球队和所有情况的银弹。

+0

我真的很喜欢这个答案。我想知道其他开发人员是如何处理这种情况的。我担心的是,我在想一些真正“奇怪”的东西来解决问题,但是你的回答告诉我,我并没有错。 – Dherik